{"openapi":"3.1.0","info":{"title":"Manage²Hero API","version":"1.0.0","description":"Externe Schnittstelle der Garagenverwaltung. Leitfäden und Beispiele: https://api.manage2hero.com/docs. Ausprobieren ohne Echtdaten: Sandbox (Testmodus) mit Test-Tokens, https://api.manage2hero.com/docs/sandbox. Aktueller Betriebsstatus der API und der Webhook-Zustellung: https://api.manage2hero.com/docs/status. Hinweis für Code-Generatoren: Aufzählungen (enum) sind offene Wertemengen; innerhalb von v1 können neue Status-, Fehler-, Ereignis- und Scope-Werte hinzukommen. Unbekannte Werte tolerieren (Auffangzweig) und als „unbekannt“ behandeln. Die Webhook-Nachrichten, die Manage²Hero an Ihre Adresse sendet, stehen im Abschnitt `webhooks` dieser Datei (OpenAPI 3.1, je Ereignis ein Eintrag: payment.received bis webhook.test), nicht unter `paths`; Generatoren, die nur `paths` auswerten, erzeugen dafür keine Typen. Betriebsregeln für Integrationen: Integrations-Checkliste im Webhooks-Handbuch, https://api.manage2hero.com/docs/webhooks#checklist.","x-revision":"2026-10-20"},"servers":[{"url":"https://api-stg.manage2hero.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API-Token aus Administration → API-Zugänge, Format `m2h_<umgebung>_<kennung>_<geheimnis>`. Umgebung: `live` (Produktion), `stg` (Staging) oder `dev` (Entwicklung); ein Token gilt nur in seiner Umgebung (sonst 401 `wrong_environment`). Ausnahme: Sandbox-Tokens (`m2h_test_…`, Verwaltung → API-Zugänge → Sandbox) gelten in jeder Umgebung, sehen nur erfundene Musterdaten und tragen in jeder Antwort den Kopf `X-M2H-Sandbox: true`; ohne aktiven API-Zugang der Organisation antwortet die Sandbox mit 403 `sandbox_unavailable`. Übergabe im Kopf `Authorization: Bearer <token>`; ein anderes Schema (z. B. `Basic`) ergibt 401 `invalid_authorization_scheme`."}},"headers":{"X-RateLimit-Limit":{"description":"Aufrufe je Minute, die dieses Token machen darf (Lesen 120, Schreiben 20). Steht auf jeder Antwort, sobald das Token bekannt ist.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Aufrufe, die im aktuellen gleitenden Minutenfenster noch frei sind.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Sekunden, bis alle bisher gezählten Aufrufe aus dem gleitenden Fenster gefallen sind (höchstens 60). Bei 429 wie Retry-After: die Wartezeit bis zum nächsten möglichen Aufruf (bei den Stundengrenzen von Replay und Importen bis zu 3600).","schema":{"type":"integer"}},"Retry-After":{"description":"Wartezeit in Sekunden vor dem nächsten Versuch (429): 1 bis 60 bei den Minutengrenzen, bis zu 3600 bei den Stundengrenzen von Replay und Importen.","schema":{"type":"integer"}},"X-Request-Id":{"description":"Kennung dieser Antwort (wie request_id im Body) — bei Rückfragen an den Support angeben.","schema":{"type":"string"}}},"schemas":{},"parameters":{}},"paths":{"/v1/locations":{"get":{"summary":"Garagenparks auflisten","description":"Alle Garagenparks Ihrer Organisation, alphabetisch nach Name. Mit `active=true` nur aktive Standorte.\n\nScope: `locations:read` (Ersteller braucht: locations (Lesen)).","tags":["Garagenparks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"active","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","code":"HH01","name":"Garagenpark Hamburg Nord","street":"Beispielweg","house_number":"12","postal_code":"22297","city":"Hamburg","country_code":"DE","active":true}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"code":{"type":"string"},"name":{"type":"string"},"street":{"type":"string"},"house_number":{"type":"string"},"postal_code":{"type":"string"},"city":{"type":"string"},"country_code":{"type":"string"},"active":{"type":"boolean"}},"required":["id","code","name","street","house_number","postal_code","city","country_code","active"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/occupancy":{"get":{"summary":"Vermietungsquote aller Garagenparks","description":"Belegungszahlen je Garagenpark. `occupancy_rate` = vermietete Einheiten ÷ alle Einheiten (0–1). Gekündigte, noch laufende Verträge zählen als vermietet; reservierte und gesperrte Einheiten stehen im Nenner. Die Rohzahlen sind immer dabei. Mit `group_by=storage_type` enthält jeder Garagenpark zusätzlich `storage_types`: dieselben Zahlen je Garagentyp.\n\nScope: `occupancy:read` (Ersteller braucht: occupancy_plan (Lesen)).","tags":["Belegung"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["storage_type"]},"required":false,"name":"group_by","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","location_code":"HH01","location_name":"Garagenpark Hamburg Nord","as_of":"2026-09-24T08:15:00.000Z","units_total":120,"units_rented":104,"units_reserved":3,"units_blocked":2,"units_available":11,"occupancy_rate":0.8667,"occupancy_rate_definition":"rented_of_total"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_code":{"type":"string"},"location_name":{"type":"string"},"as_of":{"type":"string"},"units_total":{"type":"integer"},"units_rented":{"type":"integer"},"units_reserved":{"type":"integer"},"units_blocked":{"type":"integer"},"units_available":{"type":"integer"},"occupancy_rate":{"type":["number","null"]},"occupancy_rate_definition":{"type":"string","enum":["rented_of_total"]},"storage_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"storage_type_name":{"type":["string","null"]},"units_total":{"type":"integer"},"units_rented":{"type":"integer"},"units_reserved":{"type":"integer"},"units_blocked":{"type":"integer"},"units_available":{"type":"integer"},"occupancy_rate":{"type":["number","null"]}},"required":["storage_type_id","storage_type_name","units_total","units_rented","units_reserved","units_blocked","units_available","occupancy_rate"]}}},"required":["location_id","location_code","location_name","as_of","units_total","units_rented","units_reserved","units_blocked","units_available","occupancy_rate","occupancy_rate_definition"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/locations/{id}/occupancy":{"get":{"summary":"Vermietungsquote eines Garagenparks","description":"Wie `/v1/occupancy`, für genau einen Garagenpark (auch mit `group_by=storage_type`). Unbekannte oder fremde Id: 404.\n\nScope: `occupancy:read` (Ersteller braucht: occupancy_plan (Lesen)).","tags":["Belegung"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Garagenparks (aus GET /v1/locations)"},"required":true,"description":"Id des Garagenparks (aus GET /v1/locations)","name":"id","in":"path"},{"schema":{"type":"string","enum":["storage_type"]},"required":false,"name":"group_by","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","location_code":"HH01","location_name":"Garagenpark Hamburg Nord","as_of":"2026-09-24T08:15:00.000Z","units_total":120,"units_rented":104,"units_reserved":3,"units_blocked":2,"units_available":11,"occupancy_rate":0.8667,"occupancy_rate_definition":"rented_of_total"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_code":{"type":"string"},"location_name":{"type":"string"},"as_of":{"type":"string"},"units_total":{"type":"integer"},"units_rented":{"type":"integer"},"units_reserved":{"type":"integer"},"units_blocked":{"type":"integer"},"units_available":{"type":"integer"},"occupancy_rate":{"type":["number","null"]},"occupancy_rate_definition":{"type":"string","enum":["rented_of_total"]},"storage_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"storage_type_name":{"type":["string","null"]},"units_total":{"type":"integer"},"units_rented":{"type":"integer"},"units_reserved":{"type":"integer"},"units_blocked":{"type":"integer"},"units_available":{"type":"integer"},"occupancy_rate":{"type":["number","null"]}},"required":["storage_type_id","storage_type_name","units_total","units_rented","units_reserved","units_blocked","units_available","occupancy_rate"]}}},"required":["location_id","location_code","location_name","as_of","units_total","units_rented","units_reserved","units_blocked","units_available","occupancy_rate","occupancy_rate_definition"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/locations/{id}/tenants":{"get":{"summary":"Aktuelle Mieter eines Garagenparks","description":"Eine Zeile je laufendem Vertrag, sortiert nach Einheitennummer. „Laufend“ umfasst die Kündigungs- und Auszugsphase (`lease.status = terminated`). Enthält nur Kontaktdaten — keine Postadresse, keine Bankdaten, kein Geburtsdatum.\n\nScope: `tenants:read` (Ersteller braucht: tenants (Lesen), leasing_process (Lesen)).","tags":["Mieter"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Garagenparks (aus GET /v1/locations)"},"required":true,"description":"Id des Garagenparks (aus GET /v1/locations)","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"lease":{"id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","status":"active","lease_start":"2023-04-01","lease_end":null},"unit":{"id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","number":"42"},"tenant":{"id":"9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b","customer_number":"10042","salutation":"mr","first_name":"Max","last_name":"Mustermann","company":null,"email":"max.mustermann@example.org","phone":"+49 40 1234567","mobile":null}}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"lease":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"status":{"type":"string","enum":["active","terminated"]},"lease_start":{"type":["string","null"]},"lease_end":{"type":["string","null"]}},"required":["id","contract_number","status","lease_start","lease_end"]},"unit":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"number":{"type":"string"}},"required":["id","number"]},"tenant":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"salutation":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"email":{"type":"string"},"phone":{"type":["string","null"]},"mobile":{"type":["string","null"]}},"required":["id","customer_number","salutation","first_name","last_name","company","email","phone","mobile"]}},"required":["lease","unit","tenant"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/tenant-imports":{"post":{"summary":"Bestandsmieter an den Import übergeben","description":"Legt einen Import für genau einen Garagenpark an (1–500 Datensätze, Body höchstens 1 MB). Die Datensätze werden wie beim Datei-Import geprüft; fehlerhafte werden mit Fehlercodes angelegt und lassen sich in der Verwaltung korrigieren. Zuordnen und Übernehmen erfolgt im Import-Assistenten der Verwaltung oder mit `POST /v1/tenant-imports/{id}/commit` (eigener Scope `tenants:import_commit`). Bankdaten (`iban`, `bic`, `account_holder`) sind nicht erlaubt. Gleicher `Idempotency-Key` mit gleichem Inhalt liefert denselben Import (200), mit anderem Inhalt 409. Eigene Grenzen je Organisation (Vorgabe 50 offene Importe, 20 neue je Token und Stunde; anhebbar über den Support): 422 `import_limit_reached` bzw. 429 `import_rate_limited`, Grenze und Stand in `error.details`. Feste Gesamtgrenze: 500 Importe je Organisation (Datei und API, auch abgeschlossene) → 422 `import_total_limit_reached`.\n\nScope: `tenants:import` (Ersteller braucht: admin_data_import (Bearbeiten), leasing_process (Lesen)).","tags":["Mieterimport"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","name":"Übernahme aus Altsystem","records":[{"salutation":"Herr","first_name":"Max","last_name":"Mustermann","date_of_birth":"1980-05-17","email":"max.mustermann@example.org","street":"Musterstraße","house_number":"1","postal_code":"22297","city":"Hamburg","phone":"+49 40 1234567","contract_number":"HH01 42-1","lease_start":"2023-04-01","rent_net":89.5,"deposit":150,"has_electricity_230v":true,"electricity_advance_payment":10,"electricity_meter_fee":2.5}]},"schema":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":"string","minLength":1,"maxLength":200},"records":{"type":"array","items":{"type":"object","properties":{"salutation":{"type":["string","null"],"maxLength":1000},"first_name":{"type":["string","null"],"maxLength":1000},"last_name":{"type":["string","null"],"maxLength":1000},"company_name":{"type":["string","null"],"maxLength":1000},"date_of_birth":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"email":{"type":["string","null"],"maxLength":1000},"street":{"type":["string","null"],"maxLength":1000},"house_number":{"type":["string","null"],"maxLength":1000},"postal_code":{"type":["string","null"],"maxLength":1000},"city":{"type":["string","null"],"maxLength":1000},"country":{"type":["string","null"],"maxLength":1000},"phone":{"type":["string","null"],"maxLength":1000},"mobile":{"type":["string","null"],"maxLength":1000},"contract_number":{"type":["string","null"],"maxLength":1000},"lease_start":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"rent_net":{"type":["number","null"]},"deposit":{"type":["number","null"]},"deposit_paid":{"type":["boolean","null"]},"move_in_date":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"has_electricity_230v":{"type":["boolean","null"]},"has_electricity_400v":{"type":["boolean","null"]},"electricity_meter_fee":{"type":["number","null"]},"electricity_advance_payment":{"type":["number","null"]},"electricity_price_kwh_net":{"type":["number","null"]},"notice_period_months":{"type":["number","null"]},"minimum_lease_months":{"type":["number","null"]},"meter_reading":{"type":["number","null"]},"meter_reading_date":{"type":["string","null"],"pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["location_id","records"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"01923f4e-7a2b-7c3d-8e4f-5a6b7c8d9e0f","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","name":"Übernahme aus Altsystem","status":"pending","record_count":1,"error_count":0,"transferred_count":0,"created_at":"2026-09-24T08:15:00.000Z","completed_at":null,"records":[{"row":1,"status":"pending","errors":[],"warnings":[],"storage_unit_id":null,"tenant_id":null,"lease_id":null,"transferred_at":null,"error_code":null}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","completed"]},"record_count":{"type":"integer"},"error_count":{"type":"integer"},"transferred_count":{"type":"integer"},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]},"records":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"status":{"type":"string","enum":["pending","error","transferred"]},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"storage_unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"transferred_at":{"type":["string","null"]},"error_code":{"type":["string","null"]}},"required":["row","status","errors","warnings","storage_unit_id","tenant_id","lease_id","transferred_at","error_code"]}},"next_cursor":{"type":["string","null"]}},"required":["id","location_id","name","status","record_count","error_count","transferred_count","created_at","completed_at","records","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"01923f4e-7a2b-7c3d-8e4f-5a6b7c8d9e0f","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","name":"Übernahme aus Altsystem","status":"pending","record_count":1,"error_count":0,"transferred_count":0,"created_at":"2026-09-24T08:15:00.000Z","completed_at":null,"records":[{"row":1,"status":"pending","errors":[],"warnings":[],"storage_unit_id":null,"tenant_id":null,"lease_id":null,"transferred_at":null,"error_code":null}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","completed"]},"record_count":{"type":"integer"},"error_count":{"type":"integer"},"transferred_count":{"type":"integer"},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]},"records":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"status":{"type":"string","enum":["pending","error","transferred"]},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"storage_unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"transferred_at":{"type":["string","null"]},"error_code":{"type":["string","null"]}},"required":["row","status","errors","warnings","storage_unit_id","tenant_id","lease_id","transferred_at","error_code"]}},"next_cursor":{"type":["string","null"]}},"required":["id","location_id","name","status","record_count","error_count","transferred_count","created_at","completed_at","records","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). Bankfelder: `field_not_allowed`, `error.details` = Liste aus `row` und `field`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte). `error.details.max_bytes`: Höchstgröße.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"422":{"description":"Höchstzahl Importe der Organisation erreicht. Bei `import_limit_reached`: `error.details` = `{ limit, open }`; `import_total_limit_reached` trägt keine Details.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten). `import_rate_limited`: `error.details` = `{ limit, used }`, `Retry-After` 3600. Die Grenze von 20 Importen in 10 Minuten je Konto antwortet mit `rate_limited` ohne `details` und `Retry-After` 600.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/tenant-imports/{id}":{"get":{"summary":"Stand eines Imports","description":"Status des Imports und je Datensatz Prüfergebnis (Codes), Zuordnung und nach der Übernahme `tenant_id`/`lease_id`. Keine Feldwerte. Nur Importe, die über die API angelegt wurden; sonst 404.\n\nScope: `tenants:import` (Ersteller braucht: admin_data_import (Bearbeiten), leasing_process (Lesen)).","tags":["Mieterimport"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Imports (aus POST /v1/tenant-imports)"},"required":true,"description":"Id des Imports (aus POST /v1/tenant-imports)","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"01923f4e-7a2b-7c3d-8e4f-5a6b7c8d9e0f","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","name":"Übernahme aus Altsystem","status":"pending","record_count":1,"error_count":0,"transferred_count":0,"created_at":"2026-09-24T08:15:00.000Z","completed_at":null,"records":[{"row":1,"status":"pending","errors":[],"warnings":[],"storage_unit_id":null,"tenant_id":null,"lease_id":null,"transferred_at":null,"error_code":null}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","completed"]},"record_count":{"type":"integer"},"error_count":{"type":"integer"},"transferred_count":{"type":"integer"},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]},"records":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"status":{"type":"string","enum":["pending","error","transferred"]},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"warnings":{"type":"array","items":{"type":"object","properties":{"field":{"type":["string","null"]},"code":{"type":"string"}},"required":["field","code"]}},"storage_unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"transferred_at":{"type":["string","null"]},"error_code":{"type":["string","null"]}},"required":["row","status","errors","warnings","storage_unit_id","tenant_id","lease_id","transferred_at","error_code"]}},"next_cursor":{"type":["string","null"]}},"required":["id","location_id","name","status","record_count","error_count","transferred_count","created_at","completed_at","records","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"delete":{"summary":"Import abbrechen","description":"Bricht einen über die API angelegten Import ab und löscht ihn samt Datensätzen, damit fehlgeschlagene oder überflüssige Importe die Grenze der offenen Importe nicht belegen. In der Verwaltung angelegte Importe, unbekannte oder fremde Ids und bereits gelöschte Importe: 404. Ist mindestens ein Datensatz des Imports schon übernommen, wird nichts gelöscht: 409 `session_has_transferred_records` (Mieter und Verträge verweisen auf den Import). Das Löschen eines Imports, der jünger als eine Stunde ist, zählt gegen die Stundengrenze neuer Importe je Token: 429 `import_rate_limited`. Keine Query-Parameter und kein Body. Der Scope `tenants:import` genügt; zusätzlich braucht der Ersteller des Tokens in der Verwaltung das Recht Datenimport mit Vollzugriff, wie beim Löschen eines Imports dort (sonst 403 `insufficient_permissions`).\n\nScope: `tenants:import` (Ersteller braucht: admin_data_import (Bearbeiten), leasing_process (Lesen)).","tags":["Mieterimport"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Imports (aus POST /v1/tenant-imports)"},"required":true,"description":"Id des Imports (aus POST /v1/tenant-imports)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"session_id":"01923f4e-7a2b-7c3d-8e4f-5a6b7c8d9e0f","deleted":true},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"session_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"deleted":{"type":"boolean","enum":[true]}},"required":["session_id","deleted"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Der Import enthält bereits übernommene Datensätze (session_has_transferred_records)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/tenant-imports/{id}/commit":{"post":{"summary":"Import übernehmen (Mieter und Verträge anlegen)","description":"Übernimmt die Datensätze eines API-Imports wie der Import-Assistent: je Datensatz Mieter, laufender Vertrag mit Kostensatz, Anfangs-Zählerstand und Dauerbuchung ab dem nächsten Monatsersten (keine rückwirkenden Buchungen). Datensätze ohne Garage werden über die Vertragsnummer zugeordnet. `on_duplicate` regelt Datensätze, deren E-Mail schon einem Mieter gehört: `reject` (Vorgabe) übernimmt sie nicht (`skipped`, `duplicate_tenant`; im Import bleibt der Datensatz `pending` mit `error_code: tenant_decision_required` — die Antwort sagt `skipped`, der Status im Import ändert sich nicht), `reuse` hängt den Vertrag an diesen Mieter (nur bei genau einem Treffer), `create_new` legt einen neuen Mieter an. Ohne `rows` werden alle Datensätze übernommen. Wiederholen ist unschädlich: bereits übernommene Datensätze melden `already_transferred` (mit `tenant_id`, `lease_id` und `contract_number`). Body höchstens 64 KB (413 `payload_too_large`). Fehlerhafte Datensätze melden `failed` mit Code und lassen sich in der Verwaltung korrigieren; `record_changed` heißt, dass der Datensatz während der Übernahme in der Verwaltung geändert wurde — einfach erneut aufrufen. Endgültig — eine Übernahme lässt sich über die API nicht zurücknehmen.\n\nScope: `tenants:import_commit` (Ersteller braucht: admin_data_import (Bearbeiten), leasing_process (Bearbeiten)).","tags":["Mieterimport"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Imports (aus POST /v1/tenant-imports)"},"required":true,"description":"Id des Imports (aus POST /v1/tenant-imports)","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"on_duplicate":"reject"},"schema":{"type":"object","properties":{"on_duplicate":{"type":"string","enum":["reject","reuse","create_new"],"default":"reject"},"rows":{"type":"array","items":{"type":"integer","minimum":1,"maximum":100000},"minItems":1,"maxItems":500}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"session_id":"01923f4e-7a2b-7c3d-8e4f-5a6b7c8d9e0f","on_duplicate":"reject","created":1,"already_transferred":0,"skipped":1,"failed":1,"records":[{"row":1,"outcome":"created","code":null,"tenant_id":"9e8d7c6b-5a4f-4e3d-2c1b-0a9f8e7d6c5b","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01 42-1","warnings":[]},{"row":2,"outcome":"skipped","code":"duplicate_tenant","tenant_id":null,"lease_id":null,"contract_number":null,"warnings":[]},{"row":3,"outcome":"failed","code":"unit_occupied","tenant_id":null,"lease_id":null,"contract_number":null,"warnings":[]}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"session_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"on_duplicate":{"type":"string","enum":["reject","reuse","create_new"]},"created":{"type":"integer"},"already_transferred":{"type":"integer"},"skipped":{"type":"integer"},"failed":{"type":"integer"},"records":{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"outcome":{"type":"string","enum":["created","already_transferred","skipped","failed"]},"code":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"warnings":{"type":"array","items":{"type":"string"}}},"required":["row","outcome","code","tenant_id","lease_id","contract_number","warnings"]}}},"required":["session_id","on_duplicate","created","already_transferred","skipped","failed","records"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Die Zählerstände der Organisation werden gerade bearbeitet (`readings_locked`): dieser Block wurde nicht übernommen; bei mehr als 25 Datensätzen können frühere Blöcke schon übernommen sein. Erneut senden — bereits übernommene Datensätze melden `already_transferred`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte). `error.details.max_bytes`: 65536.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/occupancy/history":{"get":{"summary":"Verlauf der Vermietungsquote","description":"Belegung je Tag (`interval=day`, höchstens 366 Kalendertage einschließlich `from` und `to`) oder je Monat (`interval=month`, Vorgabe, höchstens 1.831 Kalendertage einschließlich `from` und `to`). Ohne `location_id` die Summe aller Garagenparks Ihrer Organisation — die Quote entsteht aus den summierten Einheiten. Gemessen wird einmal je Stunde; der Tageswert ist der letzte Messwert des Tages (deutsche Zeit), der Monatswert der letzte vorhandene Tageswert des Monats. `partial: true` kennzeichnet den laufenden Tag bzw. Monat. Die Messung begann mit der Einführung dieses Endpunkts (`history_starts_on`); frühere Zeiträume sind leer, es wird nichts zurückgerechnet. Tage ohne Messung (Ausfall) werden nicht aufgefüllt, sondern in `missing_days` genannt. Wird ein Garagenpark gelöscht, verschwindet auch sein Verlauf. Zu lange Zeiträume: 400 `range_too_large`.\n\nScope: `occupancy:read` (Ersteller braucht: occupancy_plan (Lesen)).","tags":["Belegung"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["day","month"],"default":"month"},"required":false,"name":"interval","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"location_id":null,"from":"2026-07-01","to":"2026-09-30","interval":"month","history_starts_on":"2026-07-14","occupancy_rate_definition":"rented_of_total","points":[{"period":"2026-07","date":"2026-07-31","units_total":240,"units_rented":205,"units_reserved":6,"units_blocked":4,"units_available":25,"occupancy_rate":0.8542,"partial":false},{"period":"2026-08","date":"2026-08-31","units_total":240,"units_rented":209,"units_reserved":5,"units_blocked":4,"units_available":22,"occupancy_rate":0.8708,"partial":false},{"period":"2026-09","date":"2026-09-28","units_total":240,"units_rented":211,"units_reserved":3,"units_blocked":4,"units_available":22,"occupancy_rate":0.8792,"partial":true}],"missing_days":["2026-08-17"]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"from":{"type":"string"},"to":{"type":"string"},"interval":{"type":"string","enum":["day","month"]},"history_starts_on":{"type":["string","null"]},"occupancy_rate_definition":{"type":"string","enum":["rented_of_total"]},"points":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"date":{"type":"string"},"units_total":{"type":"integer"},"units_rented":{"type":"integer"},"units_reserved":{"type":"integer"},"units_blocked":{"type":"integer"},"units_available":{"type":"integer"},"occupancy_rate":{"type":["number","null"]},"partial":{"type":"boolean"}},"required":["period","date","units_total","units_rented","units_reserved","units_blocked","units_available","occupancy_rate","partial"]}},"missing_days":{"type":"array","items":{"type":"string"}}},"required":["location_id","from","to","interval","history_starts_on","occupancy_rate_definition","points","missing_days"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/bookings":{"get":{"summary":"Buchungsjournal","description":"Alle Buchungen Ihrer Organisation mit Buchungsdatum im Zeitraum `from`–`to` (höchstens 366 Kalendertage einschließlich `from` und `to`, sonst 400 `range_too_large`), sortiert nach Buchungsdatum. Mit Kontonummern (SKR03) für Soll und Haben, Beträgen netto/Steuer/brutto (`vat_rate` als Anteil, 0.19 = 19 %) und Belegnummer. `category`: rent, deposit, electricity, water, damage, dunning_fee, revenue_other, overpayment — unbekannte neue Belegarten erscheinen als `other`. Gegenbuchungen von Zahlungen (`is_counter_posting`) sind enthalten; mit `include_counter_postings=false` ausblenden. Buchungen ohne Garage haben `location_id = null` und erscheinen nur ohne Standortfilter. Stornierte Buchungen stehen mit `status = cancelled` im Journal. `is_payment_planning_target=true` kennzeichnet `due_date` ausschließlich als unverbindliches Zahlungsziel, keine Mahnfälligkeit; dies gilt auch für CSV, Excel und den Abruf per Kennung.\n\nScope: `bookings:read` (Ersteller braucht: accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","enum":["rent","deposit","electricity","water","damage","dunning_fee","revenue_other","overpayment"]},"required":false,"name":"category","in":"query"},{"schema":{"type":"string","enum":["open","partially_paid","paid","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"true"},"required":false,"name":"include_counter_postings","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","booking_date":"2026-09-01","due_date":"2026-09-03","is_payment_planning_target":false,"document_number":"RE-2026-00412","category":"rent","booking_text":"Miete 09/2026 Garage 42","debit_account":"10042","credit_account":"8400","amount_net":84.03,"vat_rate":0.19,"vat_amount":15.97,"amount_gross":100,"status":"open","is_counter_posting":false,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"booking_date":{"type":"string"},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean","description":"Bei true ist due_date ein unverbindliches Planungsziel, keine Mahnfälligkeit."},"document_number":{"type":"string"},"category":{"type":"string","enum":["rent","deposit","electricity","water","damage","dunning_fee","revenue_other","overpayment","other"]},"booking_text":{"type":"string"},"debit_account":{"type":"string"},"credit_account":{"type":"string"},"amount_net":{"type":"number"},"vat_rate":{"type":"number"},"vat_amount":{"type":"number"},"amount_gross":{"type":"number"},"status":{"type":"string","enum":["open","partially_paid","paid","cancelled"]},"is_counter_posting":{"type":"boolean"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","booking_date","due_date","document_number","category","booking_text","debit_account","credit_account","amount_net","vat_rate","vat_amount","amount_gross","status","is_counter_posting","lease_id","unit_id","location_id"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/revenue":{"get":{"summary":"Nettoumsatz nach Monat, Belegart oder Garagenpark","description":"Nettoumsatz im Zeitraum `from`–`to` (höchstens 1.831 Kalendertage einschließlich `from` und `to`), gruppiert mit `group_by=month` (Vorgabe, jeder Monat auch mit 0), `category` oder `location`. Dieselbe Zahl wie im Dashboard der Verwaltung: Haben minus Soll auf den Erlöskonten, ohne Gegenbuchungen und ohne stornierte Buchungen; Gutschriften mindern den Umsatz. Zeitbezug ist das Buchungsdatum. **Stornos wirken rückwirkend:** Eine stornierte Buchung fällt aus ihrem ursprünglichen Monat heraus — abgerufene Werte früherer Monate können sich deshalb später ändern. Buchungen ohne Garage stehen bei `group_by=location` unter `key = null`.\n\nScope: `bookings:read` (Ersteller braucht: accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["month","category","location"],"default":"month"},"required":false,"name":"group_by","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"from":"2026-01-01","to":"2026-03-31","location_id":null,"group_by":"month","currency":"EUR","revenue_net_total":30512.4,"groups":[{"key":"2026-01","name":null,"revenue_net":10150.2},{"key":"2026-02","name":null,"revenue_net":10080},{"key":"2026-03","name":null,"revenue_net":10282.2}],"definition":"revenue_accounts_credit_minus_debit_excl_cancelled"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"group_by":{"type":"string","enum":["month","category","location"]},"currency":{"type":"string","enum":["EUR"]},"revenue_net_total":{"type":"number"},"groups":{"type":"array","items":{"type":"object","properties":{"key":{"type":["string","null"]},"name":{"type":["string","null"]},"revenue_net":{"type":"number"}},"required":["key","name","revenue_net"]}},"definition":{"type":"string","enum":["revenue_accounts_credit_minus_debit_excl_cancelled"]}},"required":["from","to","location_id","group_by","currency","revenue_net_total","groups","definition"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/tenants/{id}":{"get":{"summary":"Ein Mieter","description":"Kontaktdaten eines Mieters Ihrer Organisation — auch ohne laufenden Vertrag (`has_current_lease = false`), etwa für offene Forderungen ehemaliger Mieter. Keine Postadresse, keine Bankdaten, kein Geburtsdatum. Unbekannte oder fremde Id: 404.\n\nScope: `tenants:read` (Ersteller braucht: tenants (Lesen), leasing_process (Lesen)).","tags":["Mieter"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Mieters (z. B. aus offenen Posten oder Mieterlisten)"},"required":true,"description":"Id des Mieters (z. B. aus offenen Posten oder Mieterlisten)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","customer_number":"10042","salutation":"mr","first_name":"Max","last_name":"Muster","company":null,"email":"max@example.org","phone":"040 1234567","mobile":null,"has_current_lease":false},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"salutation":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"email":{"type":"string"},"phone":{"type":["string","null"]},"mobile":{"type":["string","null"]},"has_current_lease":{"type":"boolean"}},"required":["id","customer_number","salutation","first_name","last_name","company","email","phone","mobile","has_current_lease"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/invoices":{"get":{"summary":"Rechnungen","description":"Rechnungen Ihrer Organisation mit Rechnungsdatum im Zeitraum `from`–`to` (höchstens 1.831 Kalendertage einschließlich `from` und `to`), sortiert nach Datum. Entwürfe erscheinen nie. `status`: open, partially_paid, paid, cancelled, dunning. Stornos: `is_cancellation` kennzeichnet eine Stornorechnung, `cancels_invoice_id` und `cancelled_by_invoice_id` verknüpfen Original und Storno. `amount_paid` enthält nur an der Rechnung erfasste Zahlungen — Bankzuordnungen stehen in `/v1/payments`, der tatsächliche Restbetrag einer Mietforderung in `/v1/open-items`. Keine Anschrift und keine E-Mail des Kunden. `is_payment_planning_target=true` kennzeichnet `due_date` ausschließlich als unverbindliches Zahlungsziel, keine Mahnfälligkeit; dies gilt auch für Detail, CSV, Excel und den Abruf per Kennung.\n\nScope: `invoices:read` (Ersteller braucht: accounting_invoices (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","enum":["open","partially_paid","paid","cancelled","dunning"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091","invoice_number":"RE-2026-00412","kind":"recurring_rent","status":"partially_paid","invoice_date":"2026-09-01","service_date":"2026-09-01","due_date":"2026-09-03","is_payment_planning_target":false,"subject":"Miete September 2026","total_net":84.03,"total_vat":15.97,"total_gross":100,"amount_paid":40,"paid_at":null,"is_cancellation":false,"cancels_invoice_id":null,"cancelled_by_invoice_id":null,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","customer_number":"10042","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"invoice_number":{"type":["string","null"]},"kind":{"type":"string","enum":["standard","recurring_rent","other"]},"status":{"type":"string","enum":["open","partially_paid","paid","cancelled","dunning"]},"invoice_date":{"type":"string"},"service_date":{"type":["string","null"]},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean","description":"Bei true ist due_date ein unverbindliches Planungsziel, keine Mahnfälligkeit."},"subject":{"type":"string"},"total_net":{"type":"number"},"total_vat":{"type":"number"},"total_gross":{"type":"number"},"amount_paid":{"type":"number"},"paid_at":{"type":["string","null"]},"is_cancellation":{"type":"boolean"},"cancels_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"cancelled_by_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","invoice_number","kind","status","invoice_date","service_date","due_date","subject","total_net","total_vat","total_gross","amount_paid","paid_at","is_cancellation","cancels_invoice_id","cancelled_by_invoice_id","lease_id","tenant_id","customer_number","location_id","unit_id"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/invoices/{id}":{"get":{"summary":"Eine Rechnung mit Positionen","description":"Wie ein Eintrag aus `/v1/invoices`, dazu die Positionen. Unbekannte oder fremde Id und Entwürfe: 404.\n\nScope: `invoices:read` (Ersteller braucht: accounting_invoices (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id der Rechnung (aus GET /v1/invoices)"},"required":true,"description":"Id der Rechnung (aus GET /v1/invoices)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091","invoice_number":"RE-2026-00412","kind":"recurring_rent","status":"partially_paid","invoice_date":"2026-09-01","service_date":"2026-09-01","due_date":"2026-09-03","is_payment_planning_target":false,"subject":"Miete September 2026","total_net":84.03,"total_vat":15.97,"total_gross":100,"amount_paid":40,"paid_at":null,"is_cancellation":false,"cancels_invoice_id":null,"cancelled_by_invoice_id":null,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","customer_number":"10042","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d","items":[{"position":1,"description":"Miete Garage 42, September 2026","quantity":1,"unit":"Monat","unit_price_net":84.03,"discount_percent":0,"vat_rate":0.19,"line_net":84.03,"line_vat":15.97,"line_gross":100}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"invoice_number":{"type":["string","null"]},"kind":{"type":"string","enum":["standard","recurring_rent","other"]},"status":{"type":"string","enum":["open","partially_paid","paid","cancelled","dunning"]},"invoice_date":{"type":"string"},"service_date":{"type":["string","null"]},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean","description":"Bei true ist due_date ein unverbindliches Planungsziel, keine Mahnfälligkeit."},"subject":{"type":"string"},"total_net":{"type":"number"},"total_vat":{"type":"number"},"total_gross":{"type":"number"},"amount_paid":{"type":"number"},"paid_at":{"type":["string","null"]},"is_cancellation":{"type":"boolean"},"cancels_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"cancelled_by_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"description":{"type":"string"},"quantity":{"type":"number"},"unit":{"type":"string"},"unit_price_net":{"type":"number"},"discount_percent":{"type":"number"},"vat_rate":{"type":"number"},"line_net":{"type":"number"},"line_vat":{"type":"number"},"line_gross":{"type":"number"}},"required":["position","description","quantity","unit","unit_price_net","discount_percent","vat_rate","line_net","line_vat","line_gross"]}}},"required":["id","invoice_number","kind","status","invoice_date","service_date","due_date","subject","total_net","total_vat","total_gross","amount_paid","paid_at","is_cancellation","cancels_invoice_id","cancelled_by_invoice_id","lease_id","tenant_id","customer_number","location_id","unit_id","items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/payments":{"get":{"summary":"Zahlungseingänge","description":"Eingegangene Bankumsätze (Betrag > 0) mit Buchungsdatum im Zeitraum `from`–`to` (höchstens 366 Kalendertage einschließlich `from` und `to`), sortiert nach Datum, mit ihrer Zuordnung: `allocations` nennt je Buchung den Vertrag und den Betrag — eine Zahlung kann auf mehrere Verträge verteilt sein. `overpayment_amount` = bei der Zuordnung als Überzahlung auf den Vertrag verbuchter Rest, `unallocated_amount` = weder zugeordnet noch als Überzahlung verbucht. Nur Bankumsätze: Manuell an einer Rechnung erfasste Zahlungen stehen in `/v1/invoices` (`amount_paid`). **Bankdaten nur mit Zusatz-Scope:** Gegenkonto (`counterparty`: Name, IBAN, BIC, Bank), Verwendungszweck, Mandatsreferenz und Gläubiger-Id erscheinen nur, wenn das Token zusätzlich `payments:read_counterparty` hat — sonst fehlen diese Felder ganz. Bei Umsätzen aus der Bankanbindung sind `bic`, `bank_name` und `creditor_id` häufig `null`, weil die Bank sie nicht liefert.\n\nScope: `payments:read` (Ersteller braucht: accounting_payments (Lesen), accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["unmatched","partial","matched","ignored"]},"required":false,"name":"match_status","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"8f7e6d5c-4b3a-4291-8a7b-6c5d4e3f2a19","booking_date":"2026-09-02","value_date":"2026-09-02","amount":100,"currency":"EUR","match_status":"matched","allocated_amount":100,"overpayment_amount":0,"unallocated_amount":0,"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","is_potential_duplicate":false,"allocations":[{"booking_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","amount":100}]}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"booking_date":{"type":"string"},"value_date":{"type":["string","null"]},"amount":{"type":"number"},"currency":{"type":"string"},"match_status":{"type":"string","enum":["unmatched","partial","matched","ignored"]},"allocated_amount":{"type":"number"},"overpayment_amount":{"type":"number"},"unallocated_amount":{"type":"number"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"is_potential_duplicate":{"type":"boolean"},"allocations":{"type":"array","items":{"type":"object","properties":{"booking_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"amount":{"type":"number"}},"required":["booking_id","lease_id","amount"]}},"counterparty":{"type":"object","properties":{"name":{"type":["string","null"]},"iban":{"type":["string","null"]},"bic":{"type":["string","null"]},"bank_name":{"type":["string","null"]}},"required":["name","iban","bic","bank_name"]},"purpose":{"type":["string","null"]},"mandate_reference":{"type":["string","null"]},"creditor_id":{"type":["string","null"]}},"required":["id","booking_date","value_date","amount","currency","match_status","allocated_amount","overpayment_amount","unallocated_amount","location_id","is_potential_duplicate","allocations"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/open-items":{"get":{"summary":"Offene Posten","description":"Offene Forderungen mit Restbetrag (`amount_open`), sortiert nach Fälligkeit. Enthalten sind vertragsgebundene Forderungen (Soll auf einem Debitorkonto) — dieselbe Menge wie die Forderungsübersicht der Verwaltung. Gutschriften, Gegenbuchungen und Überzahlungen zählen nicht; Teilzahlungen (Bankzuordnung und an der Rechnung erfasste Zahlung) sind abgezogen; was eine Schlussabrechnung nach Auszug auf das Schlusskonto übertragen oder mit Guthaben gedeckt hat, zählt nicht mehr (der Rest steht als eigener Posten auf dem Schlusskonto). **Einzelrechnungen ohne Vertrag fehlen** — sie stehen mit Status und bezahltem Betrag in `/v1/invoices`. Filter: `location_id`, `lease_id`, `tenant_id` (Kontaktdaten über `GET /v1/tenants/{id}`), `overdue_only=true`. `days_overdue` zählt nach deutschem Datum.\n\nScope: `open_items:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","enum":["true","false"],"default":"false"},"required":false,"name":"overdue_only","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","document_number":"RE-2026-00388","category":"rent","booking_text":"Miete 08/2026 Garage 42","due_date":"2026-08-03","days_overdue":56,"amount_gross":100,"amount_paid":40,"amount_open":60,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","customer_number":"10042","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","dunning_level":1,"excluded_from_dunning":false}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_number":{"type":"string"},"category":{"type":"string","enum":["rent","deposit","electricity","water","damage","dunning_fee","revenue_other","overpayment","other"]},"booking_text":{"type":"string"},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean"},"days_overdue":{"type":"integer"},"amount_gross":{"type":"number"},"amount_paid":{"type":"number"},"amount_open":{"type":"number"},"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"dunning_level":{"type":"integer"},"excluded_from_dunning":{"type":"boolean"}},"required":["id","document_number","category","booking_text","due_date","days_overdue","amount_gross","amount_paid","amount_open","lease_id","contract_number","tenant_id","customer_number","unit_id","location_id","dunning_level","excluded_from_dunning"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/open-items/summary":{"get":{"summary":"Offene Posten: Summen und Altersstruktur","description":"Anzahl und Summe der offenen Forderungen, davon überfällig, und die Altersklassen `not_due`, `1_30`, `31_60`, `61_90`, `over_90` (Tage nach Fälligkeit). Mit `group_by=location` zusätzlich je Garagenpark. Enthalten sind vertragsgebundene Forderungen (Soll auf einem Debitorkonto) — dieselbe Menge wie die Forderungsübersicht der Verwaltung. Gutschriften, Gegenbuchungen und Überzahlungen zählen nicht; Teilzahlungen (Bankzuordnung und an der Rechnung erfasste Zahlung) sind abgezogen; was eine Schlussabrechnung nach Auszug auf das Schlusskonto übertragen oder mit Guthaben gedeckt hat, zählt nicht mehr (der Rest steht als eigener Posten auf dem Schlusskonto). **Einzelrechnungen ohne Vertrag fehlen** — sie stehen mit Status und bezahltem Betrag in `/v1/invoices`.\n\nScope: `open_items:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["location"]},"required":false,"name":"group_by","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"as_of":"2026-09-28","location_id":null,"count":37,"amount_open":4210.5,"overdue_count":29,"overdue_amount":3580.5,"aging":[{"bucket":"not_due","count":8,"amount":630},{"bucket":"1_30","count":14,"amount":1420},{"bucket":"31_60","count":9,"amount":1210.5},{"bucket":"61_90","count":4,"amount":650},{"bucket":"over_90","count":2,"amount":300}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"as_of":{"type":"string"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"count":{"type":"integer"},"amount_open":{"type":"number"},"overdue_count":{"type":"integer"},"overdue_amount":{"type":"number"},"aging":{"type":"array","items":{"type":"object","properties":{"bucket":{"type":"string","enum":["not_due","1_30","31_60","61_90","over_90"]},"count":{"type":"integer"},"amount":{"type":"number"}},"required":["bucket","count","amount"]}},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":["string","null"]},"count":{"type":"integer"},"amount_open":{"type":"number"}},"required":["location_id","name","count","amount_open"]}}},"required":["as_of","location_id","count","amount_open","overdue_count","overdue_amount","aging"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/leases":{"get":{"summary":"Mahnstand je Vertrag","description":"Alle Verträge mit mindestens einer überfälligen Forderung: offene Summe, offene Mahngebühren, höchste bereits gemahnte Stufe (`dunning_level`), die Stufe, die eine Mahnung heute setzen würde (`next_level`, null = derzeit keine Mahnung möglich, z. B. weil die Zahlungsfrist der letzten Mahnung noch läuft) und ob eine Kündigung empfohlen ist — berechnet wie in der Forderungsübersicht der Verwaltung mit den dort eingestellten Mahnstufen. Sortiert nach `lease_id`. Mit `min_level` nur Verträge ab dieser gemahnten Stufe; eine Seite kann dann weniger Einträge als `limit` haben. Mahnungen werden über die API nicht ausgelöst.\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":["integer","null"],"minimum":0,"maximum":5},"required":false,"name":"min_level","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"as_of":"2026-09-28","items":[{"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","total_open":160,"total_open_fees":5,"oldest_due_date":"2026-07-03","max_days_overdue":87,"dunning_level":2,"next_level":3,"termination_recommended":false,"items":[{"open_item_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","document_number":"RE-2026-00301","due_date":"2026-07-03","days_overdue":87,"amount_open":100,"dunning_level":2,"next_level":3,"excluded_from_dunning":false}]}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"as_of":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"total_open":{"type":"number"},"total_open_fees":{"type":"number"},"oldest_due_date":{"type":"string"},"max_days_overdue":{"type":"integer"},"dunning_level":{"type":"integer"},"next_level":{"type":["integer","null"]},"termination_recommended":{"type":"boolean"},"items":{"type":"array","items":{"type":"object","properties":{"open_item_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_number":{"type":"string"},"due_date":{"type":"string"},"days_overdue":{"type":"integer"},"amount_open":{"type":"number"},"dunning_level":{"type":"integer"},"next_level":{"type":["integer","null"]},"excluded_from_dunning":{"type":"boolean"}},"required":["open_item_id","document_number","due_date","days_overdue","amount_open","dunning_level","next_level","excluded_from_dunning"]}}},"required":["lease_id","contract_number","tenant_id","location_id","total_open","total_open_fees","oldest_due_date","max_days_overdue","dunning_level","next_level","termination_recommended","items"]}},"next_cursor":{"type":["string","null"]}},"required":["as_of","items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/notices":{"get":{"summary":"Ausgestellte Mahnungen","description":"Verbindliche Mahnungen mit Ausstellungsdatum im Zeitraum `from`–`to` (höchstens 1.831 Kalendertage einschließlich `from` und `to`), sortiert nach Datum: Stufe, Zahlungsfrist, Summen, Herkunft (`manual`/`automatic`) und Versandzeitpunkt (`sent_at`, null = noch nicht versendet). Ohne Empfängeradresse und ohne PDF.\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":true,"name":"from","in":"query"},{"schema":{"type":"string"},"required":true,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":5},"required":false,"name":"level","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d1e2f3a-4b5c-4d6e-8f70-81a2b3c4d5e6","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","level":2,"issued_on":"2026-09-10","payment_deadline":"2026-09-17","total_open":160,"total_fees":5,"total_due":165,"source":"automatic","sent_at":"2026-09-10T06:02:11.000Z"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"level":{"type":"integer"},"issued_on":{"type":"string"},"payment_deadline":{"type":"string"},"total_open":{"type":"number"},"total_fees":{"type":"number"},"total_due":{"type":"number"},"source":{"type":"string","enum":["manual","automatic"]},"sent_at":{"type":["string","null"]}},"required":["id","lease_id","contract_number","tenant_id","location_id","level","issued_on","payment_deadline","total_open","total_fees","total_due","source","sent_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/notices/{id}":{"get":{"summary":"Eine Mahnung mit ihren Posten","description":"Wie ein Eintrag aus `/v1/dunning/notices`, dazu die gemahnten Forderungen mit Stufe, offenem Betrag zum Zeitpunkt der Mahnung und Gebühr. Unbekannte oder fremde Id: 404.\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id der Mahnung (aus GET /v1/dunning/notices)"},"required":true,"description":"Id der Mahnung (aus GET /v1/dunning/notices)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"7d1e2f3a-4b5c-4d6e-8f70-81a2b3c4d5e6","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","level":2,"issued_on":"2026-09-10","payment_deadline":"2026-09-17","total_open":160,"total_fees":5,"total_due":165,"source":"automatic","sent_at":"2026-09-10T06:02:11.000Z","items":[{"open_item_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","document_number":"RE-2026-00301","due_date":"2026-07-03","level":2,"amount_open":100,"fee":5}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"level":{"type":"integer"},"issued_on":{"type":"string"},"payment_deadline":{"type":"string"},"total_open":{"type":"number"},"total_fees":{"type":"number"},"total_due":{"type":"number"},"source":{"type":"string","enum":["manual","automatic"]},"sent_at":{"type":["string","null"]},"items":{"type":"array","items":{"type":"object","properties":{"open_item_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_number":{"type":"string"},"due_date":{"type":"string"},"level":{"type":"integer"},"amount_open":{"type":"number"},"fee":{"type":"number"}},"required":["open_item_id","document_number","due_date","level","amount_open","fee"]}}},"required":["id","lease_id","contract_number","tenant_id","location_id","level","issued_on","payment_deadline","total_open","total_fees","total_due","source","sent_at","items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/bookings/changes/cursor":{"get":{"summary":"Änderungsabgleich Buchungen: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Buchungen. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/bookings/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `bookings:read` (Ersteller braucht: accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/bookings/changes":{"get":{"summary":"Änderungsabgleich Buchungen: Änderungen seit dem Cursor","description":"Kennungen der Buchungen, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/bookings/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `bookings:read` (Ersteller braucht: accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/bookings/by-ids":{"get":{"summary":"Buchungen nach Kennungen","description":"Aktueller Stand von 1 bis 100 Buchungen (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `bookings:read` (Ersteller braucht: accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","booking_date":"2026-09-01","due_date":"2026-09-03","is_payment_planning_target":false,"document_number":"RE-2026-00412","category":"rent","booking_text":"Miete 09/2026 Garage 42","debit_account":"10042","credit_account":"8400","amount_net":84.03,"vat_rate":0.19,"vat_amount":15.97,"amount_gross":100,"status":"open","is_counter_posting":false,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"booking_date":{"type":"string"},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean","description":"Bei true ist due_date ein unverbindliches Planungsziel, keine Mahnfälligkeit."},"document_number":{"type":"string"},"category":{"type":"string","enum":["rent","deposit","electricity","water","damage","dunning_fee","revenue_other","overpayment","other"]},"booking_text":{"type":"string"},"debit_account":{"type":"string"},"credit_account":{"type":"string"},"amount_net":{"type":"number"},"vat_rate":{"type":"number"},"vat_amount":{"type":"number"},"amount_gross":{"type":"number"},"status":{"type":"string","enum":["open","partially_paid","paid","cancelled"]},"is_counter_posting":{"type":"boolean"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","booking_date","due_date","document_number","category","booking_text","debit_account","credit_account","amount_net","vat_rate","vat_amount","amount_gross","status","is_counter_posting","lease_id","unit_id","location_id"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/invoices/changes/cursor":{"get":{"summary":"Änderungsabgleich Rechnungen: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Rechnungen. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/invoices/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `invoices:read` (Ersteller braucht: accounting_invoices (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/invoices/changes":{"get":{"summary":"Änderungsabgleich Rechnungen: Änderungen seit dem Cursor","description":"Kennungen der Rechnungen, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/invoices/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `invoices:read` (Ersteller braucht: accounting_invoices (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/invoices/by-ids":{"get":{"summary":"Rechnungen nach Kennungen","description":"Aktueller Stand von 1 bis 100 Rechnungen (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `invoices:read` (Ersteller braucht: accounting_invoices (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2b3c4d5e-6f70-4812-9a3b-4c5d6e7f8091","invoice_number":"RE-2026-00412","kind":"recurring_rent","status":"partially_paid","invoice_date":"2026-09-01","service_date":"2026-09-01","due_date":"2026-09-03","is_payment_planning_target":false,"subject":"Miete September 2026","total_net":84.03,"total_vat":15.97,"total_gross":100,"amount_paid":40,"paid_at":null,"is_cancellation":false,"cancels_invoice_id":null,"cancelled_by_invoice_id":null,"lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","customer_number":"10042","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","unit_id":"3a4b5c6d-7e8f-4a0b-8c1d-2e3f4a5b6c7d"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"invoice_number":{"type":["string","null"]},"kind":{"type":"string","enum":["standard","recurring_rent","other"]},"status":{"type":"string","enum":["open","partially_paid","paid","cancelled","dunning"]},"invoice_date":{"type":"string"},"service_date":{"type":["string","null"]},"due_date":{"type":"string"},"is_payment_planning_target":{"type":"boolean","description":"Bei true ist due_date ein unverbindliches Planungsziel, keine Mahnfälligkeit."},"subject":{"type":"string"},"total_net":{"type":"number"},"total_vat":{"type":"number"},"total_gross":{"type":"number"},"amount_paid":{"type":"number"},"paid_at":{"type":["string","null"]},"is_cancellation":{"type":"boolean"},"cancels_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"cancelled_by_invoice_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"customer_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","invoice_number","kind","status","invoice_date","service_date","due_date","subject","total_net","total_vat","total_gross","amount_paid","paid_at","is_cancellation","cancels_invoice_id","cancelled_by_invoice_id","lease_id","tenant_id","customer_number","location_id","unit_id"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/payments/changes/cursor":{"get":{"summary":"Änderungsabgleich Zahlungseingänge: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Zahlungseingänge. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/payments/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `payments:read` (Ersteller braucht: accounting_payments (Lesen), accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/payments/changes":{"get":{"summary":"Änderungsabgleich Zahlungseingänge: Änderungen seit dem Cursor","description":"Kennungen der Zahlungseingänge, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/payments/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `payments:read` (Ersteller braucht: accounting_payments (Lesen), accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"8f7e6d5c-4b3a-4291-8a7b-6c5d4e3f2a19","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/payments/by-ids":{"get":{"summary":"Zahlungseingänge nach Kennungen","description":"Aktueller Stand von 1 bis 100 Zahlungseingänge (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `payments:read` (Ersteller braucht: accounting_payments (Lesen), accounting_overview (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"8f7e6d5c-4b3a-4291-8a7b-6c5d4e3f2a19","booking_date":"2026-09-02","value_date":"2026-09-02","amount":100,"currency":"EUR","match_status":"matched","allocated_amount":100,"overpayment_amount":0,"unallocated_amount":0,"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","is_potential_duplicate":false,"allocations":[{"booking_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","amount":100}]}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"booking_date":{"type":"string"},"value_date":{"type":["string","null"]},"amount":{"type":"number"},"currency":{"type":"string"},"match_status":{"type":"string","enum":["unmatched","partial","matched","ignored"]},"allocated_amount":{"type":"number"},"overpayment_amount":{"type":"number"},"unallocated_amount":{"type":"number"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"is_potential_duplicate":{"type":"boolean"},"allocations":{"type":"array","items":{"type":"object","properties":{"booking_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"amount":{"type":"number"}},"required":["booking_id","lease_id","amount"]}},"counterparty":{"type":"object","properties":{"name":{"type":["string","null"]},"iban":{"type":["string","null"]},"bic":{"type":["string","null"]},"bank_name":{"type":["string","null"]}},"required":["name","iban","bic","bank_name"]},"purpose":{"type":["string","null"]},"mandate_reference":{"type":["string","null"]},"creditor_id":{"type":["string","null"]}},"required":["id","booking_date","value_date","amount","currency","match_status","allocated_amount","overpayment_amount","unallocated_amount","location_id","is_potential_duplicate","allocations"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/notices/changes/cursor":{"get":{"summary":"Änderungsabgleich Mahnungen: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Mahnungen. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/dunning/notices/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/notices/changes":{"get":{"summary":"Änderungsabgleich Mahnungen: Änderungen seit dem Cursor","description":"Kennungen der Mahnungen, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/dunning/notices/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d1e2f3a-4b5c-4d6e-8f70-81a2b3c4d5e6","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/dunning/notices/by-ids":{"get":{"summary":"Mahnungen nach Kennungen","description":"Aktueller Stand von 1 bis 100 Mahnungen (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `dunning:read` (Ersteller braucht: accounting_receivables (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d1e2f3a-4b5c-4d6e-8f70-81a2b3c4d5e6","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"HH01-0042","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","level":2,"issued_on":"2026-09-10","payment_deadline":"2026-09-17","total_open":160,"total_fees":5,"total_due":165,"source":"automatic","sent_at":"2026-09-10T06:02:11.000Z"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"level":{"type":"integer"},"issued_on":{"type":"string"},"payment_deadline":{"type":"string"},"total_open":{"type":"number"},"total_fees":{"type":"number"},"total_due":{"type":"number"},"source":{"type":"string","enum":["manual","automatic"]},"sent_at":{"type":["string","null"]}},"required":["id","lease_id","contract_number","tenant_id","location_id","level","issued_on","payment_deadline","total_open","total_fees","total_due","source","sent_at"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents/changes/cursor":{"get":{"summary":"Änderungsabgleich Dokumente: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Dokumente. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/documents/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `documents:read` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents/changes":{"get":{"summary":"Änderungsabgleich Dokumente: Änderungen seit dem Cursor","description":"Kennungen der Dokumente, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/documents/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `documents:read` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents/by-ids":{"get":{"summary":"Dokumente nach Kennungen","description":"Aktueller Stand von 1 bis 100 Dokumente (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `documents:read` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f","source":"tenant","category":"contract_data","folder":null,"file_name":"Mietvertrag HH01-0042.pdf","file_size":184320,"mime_type":"application/pdf","created_at":"2026-09-18T09:41:12.000Z","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","file_available":true,"settlement_cancelled":false}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"source":{"type":"string","enum":["tenant","location"]},"category":{"type":["string","null"],"enum":["damages","communication","contract_data","handover","invoices","other",null]},"folder":{"type":["string","null"]},"file_name":{"type":"string"},"file_size":{"type":["integer","null"]},"mime_type":{"type":["string","null"]},"created_at":{"type":"string"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_available":{"type":"boolean"},"settlement_cancelled":{"type":"boolean"}},"required":["id","source","category","folder","file_name","file_size","mime_type","created_at","tenant_id","lease_id","location_id","file_available","settlement_cancelled"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/emails/changes/cursor":{"get":{"summary":"Änderungsabgleich E-Mails: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der E-Mails. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/emails/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `emails:read` (Ersteller braucht: admin_email_log (Lesen), tenants (Lesen)).","tags":["E-Mails"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/emails/changes":{"get":{"summary":"Änderungsabgleich E-Mails: Änderungen seit dem Cursor","description":"Kennungen der E-Mails, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/emails/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `emails:read` (Ersteller braucht: admin_email_log (Lesen), tenants (Lesen)).","tags":["E-Mails"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d3f9a52-1c84-4e6b-b2a0-5f8e9c1d3a47","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/emails/by-ids":{"get":{"summary":"E-Mails nach Kennungen","description":"Aktueller Stand von 1 bis 100 E-Mails (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `emails:read` (Ersteller braucht: admin_email_log (Lesen), tenants (Lesen)).","tags":["E-Mails"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d3f9a52-1c84-4e6b-b2a0-5f8e9c1d3a47","template_key":"dunning_notice","subject":"Zahlungserinnerung zu Ihrem Garagenstellplatz","body_preview":"Guten Tag Herr Muster, Zahlungserinnerung zur Miete September 2026.","status":"delivered","created_at":"2026-10-02T07:15:42.318204+00:00","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"template_key":{"type":["string","null"]},"subject":{"type":["string","null"]},"body_preview":{"type":["string","null"]},"status":{"type":"string","enum":["sent","delivered","opened"]},"created_at":{"type":"string"},"tenant_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"body_text":{"type":"string"}},"required":["id","template_key","subject","body_preview","status","created_at","tenant_id","lease_id"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contracts/changes/cursor":{"get":{"summary":"Änderungsabgleich Verträge: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Verträge. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/contracts/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `contracts:read` (Ersteller braucht: leasing_process (Lesen), tenants (Lesen)).","tags":["Verträge"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contracts/changes":{"get":{"summary":"Änderungsabgleich Verträge: Änderungen seit dem Cursor","description":"Kennungen der Verträge, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/contracts/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `contracts:read` (Ersteller braucht: leasing_process (Lesen), tenants (Lesen)).","tags":["Verträge"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contracts/by-ids":{"get":{"summary":"Verträge nach Kennungen","description":"Aktueller Stand von 1 bis 100 Verträge (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`).\n\nScope: `contracts:read` (Ersteller braucht: leasing_process (Lesen), tenants (Lesen)).","tags":["Verträge"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"V-2026-0042","status":"termination_received","lease_start":"2025-04-01","lease_end":"2026-12-31","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","unit_id":"3a7d1e55-2b9c-4f60-8d14-6c0e9b2a7f31","location_id":"5e2f8c10-7a3b-4d96-b1c8-0f4e6d2a9b73","deposit_amount":450,"notice_period_months":3,"minimum_lease_months":12,"signature":{"tenant_signed":true,"tenant_signed_at":"2025-03-12T09:41:07.512330+00:00","countersigned":true,"countersigned_at":"2025-03-13T14:02:55.108421+00:00","signed_documents":3},"terminations":[{"id":"c41e7f2a-98b3-4d05-a6e1-2b7c3d9f0e18","status":"confirmed","type":"ordinary","terminated_by":"tenant","termination_date":"2026-09-15","requested_end_date":"2026-12-31","end_date":"2026-12-31","decided_at":"2026-09-16T08:20:11.004512+00:00","created_at":"2026-09-15T18:03:27.771902+00:00"}],"supplementary_agreements":[{"id":"e8a05b31-6c2d-4f79-9d83-1a4b7c0e5f26","resource_type":"electricity","agreement_type":"activation","status":"completed","requested_date":"2025-05-01","effective_date":"2025-05-06","created_at":"2025-04-28T10:15:44.201733+00:00"}],"created_at":"2025-03-10T12:00:00.000000+00:00","updated_at":"2026-09-16T08:20:11.004512+00:00"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"status":{"type":"string","enum":["contract_created","contract_open","contract_reviewed","pending_signature","contract_signed","payment_pending","payment_received","movein_protocol_pending","movein_protocol_completed","lease_active","termination_received","moveout_protocol_pending","moveout_protocol_completed","settlement_pending","completed","cancelled"]},"lease_start":{"type":["string","null"]},"lease_end":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"deposit_amount":{"type":["number","null"]},"notice_period_months":{"type":["integer","null"]},"minimum_lease_months":{"type":["integer","null"]},"signature":{"type":"object","properties":{"tenant_signed":{"type":"boolean"},"tenant_signed_at":{"type":["string","null"]},"countersigned":{"type":"boolean"},"countersigned_at":{"type":["string","null"]},"signed_documents":{"type":"integer"}},"required":["tenant_signed","tenant_signed_at","countersigned","countersigned_at","signed_documents"]},"terminations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","confirmed","rejected","withdrawn","revoked"]},"type":{"type":["string","null"],"enum":["ordinary","extraordinary","without_notice",null]},"terminated_by":{"type":"string","enum":["tenant","landlord"]},"termination_date":{"type":["string","null"]},"requested_end_date":{"type":["string","null"]},"end_date":{"type":["string","null"]},"decided_at":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","status","type","terminated_by","termination_date","requested_end_date","end_date","decided_at","created_at"]}},"supplementary_agreements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"resource_type":{"type":"string","enum":["electricity","water"]},"agreement_type":{"type":"string","enum":["activation","deactivation"]},"status":{"type":"string","enum":["requested","planned","completed","confirmed","rejected","cancelled"]},"requested_date":{"type":["string","null"]},"effective_date":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","resource_type","agreement_type","status","requested_date","effective_date","created_at"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","contract_number","status","lease_start","lease_end","tenant_id","unit_id","location_id","deposit_amount","notice_period_months","minimum_lease_months","signature","terminations","supplementary_agreements","created_at","updated_at"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages/changes/cursor":{"get":{"summary":"Änderungsabgleich Schäden: Einstieg","description":"Liefert den Einstieg für den Änderungsabgleich der Schäden. **Vor** einem Vollabruf holen: Alles, was sich danach ändert, liefert `/v1/damages/changes` ab diesem Cursor — auch Änderungen, die während des Vollabrufs noch nicht abgeschlossen waren. Der Cursor gilt nur für diese Ressource: ein Cursor einer anderen Ressource wird mit 400 `invalid_cursor` abgewiesen.\n\nScope: `damages:read` (Ersteller braucht: storage_units (Lesen), leasing_process (Lesen)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"cursor":{"type":"string"}},"required":["cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages/changes":{"get":{"summary":"Änderungsabgleich Schäden: Änderungen seit dem Cursor","description":"Kennungen der Schäden, die sich seit dem Cursor geändert haben — neu, geändert, entfernt oder nicht mehr sichtbar. Jede Kennung per `/v1/damages/by-ids` nachladen: Was dort zurückkommt, ist der aktuelle Stand; eine Kennung, die dort fehlt, lokal entfernen. Die Reihenfolge der Einträge ist nicht die Reihenfolge der Änderungen. Es erscheinen nur abgeschlossene Änderungen, nichts geht verloren. Mit `next_cursor` weiterblättern; ist er `null`, den `resume_cursor` für den nächsten Abgleich merken. Dieselbe Kennung kann mehrfach vorkommen. Änderungen verknüpfter Stammdaten (z. B. Vertragsnummer, Standort einer Garage) lösen kein Ereignis aus; ein gelegentlicher Vollabruf (z. B. wöchentlich) gleicht sie ab. Änderungen werden 90 Tage aufbewahrt; ein älterer Cursor liefert 410 `cursor_expired` — dann neu einsteigen.\n\nScope: `damages:read` (Ersteller braucht: storage_units (Lesen), leasing_process (Lesen)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":512},"required":true,"name":"cursor","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","changed_at":"2026-09-29T21:14:03.512Z"}],"next_cursor":null,"resume_cursor":"eyJsbyI6IjEyMzQ1NiJ9"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"changed_at":{"type":"string"}},"required":["id","changed_at"]}},"next_cursor":{"type":["string","null"]},"resume_cursor":{"type":["string","null"]}},"required":["items","next_cursor","resume_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages/by-ids":{"get":{"summary":"Schäden nach Kennungen","description":"Aktueller Stand von 1 bis 100 Schäden (`ids`, durch Komma getrennt), mit denselben Feldern wie die Liste — ohne Zeitraum und ohne Filter. Unbekannte, fremde oder nicht mehr sichtbare Kennungen fehlen in der Antwort. Mehr als 100 Kennungen ergeben 400 `validation_error` (`details.ids = [\"too_many_ids\"]`), doppelte Kennungen ebenso (`[\"duplicate_ids\"]`). Die Antwort hat die Listenform (ohne das Feld `documents`); die Kennungen der Dokumente eines Schadens liefert `GET /v1/damages/{id}`.\n\nScope: `damages:read` (Ersteller braucht: storage_units (Lesen), leasing_process (Lesen)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":14800},"required":true,"name":"ids","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"WEITERE_KLAERUNG","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":null,"reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":0}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/emails":{"get":{"summary":"E-Mail-Verlauf der Mieter","description":"System-E-Mails, die Ihre Organisation an Mieter versendet hat (Verträge, Abrechnungen, Rechnungen, Mahnungen, Kündigungen, Nachträge, Termine, Protokolle, Entscheidungen, Schadensmeldungen), neueste zuerst. **Zeitfilter** auf den Versandzeitpunkt: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage**; alles gibt es nur mit `period=all` (seitenweise über `next_cursor`). Tage gelten in der Zeitzone Europe/Berlin. Filter: `tenant_id`, `lease_id`, `location_id` (alle Mieter mit einem Vertrag an einer Garage des Standorts; Mails ohne Vertragsbezug erscheinen nur ohne Standortfilter), `template_key`, `status` (`sent`, `delivered`, `opened`). Der Token sieht die ganze Organisation. **Was nie erscheint:** Mails ohne Mieterbezug (Interessenten, Warteliste, Anfragen), Mails mit Zugangsdaten oder Einmal-Links (Passwort- und Zugangsdaten-Mails, Codes, Einladungen, Angebote), nicht gelistete Vorlagen, fehlgeschlagene oder unzustellbare Mails, Testversand (`[Test]` im Betreff) — und nie die Empfängeradresse, die Anbieter-Kennung oder Fehlertexte. `body_preview` ist ein Klartext-Auszug von höchstens 200 Zeichen. **Volltext nur mit Zusatz-Scope:** `body_text` (reiner Text; Tags, Skripte und Stile entfernt, Absätze erhalten, Links ohne Adresse) erscheint nur, wenn das Token zusätzlich `emails:read_body` hat — sonst fehlt das Feld ganz. `body_text` ist Text, kein HTML: beim Anzeigen in einer Webseite wie jeden Text maskieren.\n\nScope: `emails:read` (Ersteller braucht: admin_email_log (Lesen), tenants (Lesen)).","tags":["E-Mails"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9_]+$"},"required":false,"name":"template_key","in":"query"},{"schema":{"type":"string","enum":["sent","delivered","opened"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7d3f9a52-1c84-4e6b-b2a0-5f8e9c1d3a47","template_key":"dunning_notice","subject":"Zahlungserinnerung zu Ihrem Garagenstellplatz","body_preview":"Guten Tag Herr Muster, Zahlungserinnerung zur Miete September 2026.","status":"delivered","created_at":"2026-10-02T07:15:42.318204+00:00","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"template_key":{"type":["string","null"]},"subject":{"type":["string","null"]},"body_preview":{"type":["string","null"]},"status":{"type":"string","enum":["sent","delivered","opened"]},"created_at":{"type":"string"},"tenant_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"body_text":{"type":"string"}},"required":["id","template_key","subject","body_preview","status","created_at","tenant_id","lease_id"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/emails/{id}":{"get":{"summary":"Eine E-Mail","description":"Wie ein Eintrag aus `/v1/emails`; mit dem Zusatz-Scope `emails:read_body` zusätzlich `body_text`. Unbekannte oder fremde Id sowie jede E-Mail, die `/v1/emails` nie ausgibt (Interessent, nicht gelistete Vorlage, fehlgeschlagener Versand, Test): 404 `not_found`.\n\nScope: `emails:read` (Ersteller braucht: admin_email_log (Lesen), tenants (Lesen)).","tags":["E-Mails"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id der E-Mail (aus GET /v1/emails)"},"required":true,"description":"Id der E-Mail (aus GET /v1/emails)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"7d3f9a52-1c84-4e6b-b2a0-5f8e9c1d3a47","template_key":"dunning_notice","subject":"Zahlungserinnerung zu Ihrem Garagenstellplatz","body_preview":"Guten Tag Herr Muster, Zahlungserinnerung zur Miete September 2026.","status":"delivered","created_at":"2026-10-02T07:15:42.318204+00:00","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","body_text":"Guten Tag Herr Muster,\n\nZahlungserinnerung zur Miete September 2026, offener Betrag 100,00 EUR.\n\nFreundliche Grüße\nGaragenverwaltung"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"template_key":{"type":["string","null"]},"subject":{"type":["string","null"]},"body_preview":{"type":["string","null"]},"status":{"type":"string","enum":["sent","delivered","opened"]},"created_at":{"type":"string"},"tenant_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"body_text":{"type":"string"}},"required":["id","template_key","subject","body_preview","status","created_at","tenant_id","lease_id"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/usage":{"get":{"summary":"Zugriffsprotokoll der API-Abrufe","description":"Die externen Abrufe Ihrer Organisation (alle Tokens), neueste zuerst: Token (`token_id`, `token_name`, `token_public_id` — nie das Geheimnis), `method`, `path` (ohne Query-String), `status_code`, Zeitpunkt `created_at` und `request_id`. Aufrufe der Verwaltungsoberfläche erscheinen nicht. **Nie enthalten:** IP-Adressen, User-Agent und Anfrageinhalte. Zeitfilter wie bei allen Listen: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder -Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); ohne Angabe die letzten 30 Tage; mehrere Formen → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. Weitere Filter: `token_id` (ein fremdes oder unbekanntes Token ergibt eine leere Liste), `status` (genauer Code wie `404` oder Klasse `4xx`/`5xx`) und `path_prefix` (z. B. `/v1/invoices`). Mit `next_cursor` weiterblättern. **Aufbewahrung 90 Tage:** ältere Abrufe sind nicht mehr abrufbar. Der Aufruf von `/v1/usage` erscheint selbst im Protokoll. **Abgewiesene Aufrufe** (401), die sich keinem Token zuordnen lassen — fehlender Kopf, anderes Authorization-Schema, ungültiges Format, unbekannte Token-Kennung —, stehen nicht im Protokoll; abgelehnte Anmeldungen mit bekannter Kennung (falsches Geheimnis, widerrufen, abgelaufen) erscheinen nur gedrosselt (höchstens 20 Zeilen je Token und Minute).\n\nScope: `usage:read` (Ersteller braucht: api_access (Lesen)).","tags":["Zugriffsprotokoll"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"token_id","in":"query"},{"schema":{"type":"string","pattern":"^(?:[1-5]\\d\\d|[1-5]xx)$"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^\\/[A-Za-z0-9._~\\-/]{0,199}$"},"required":false,"name":"path_prefix","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"4d3c2b1a-0f9e-4d8c-8b7a-6f5e4d3c2b1a","created_at":"2026-10-05T08:14:22.481Z","token_id":"00000000-aaaa-aaaa-aaaa-000000000042","token_name":"Buchhaltung Export","token_public_id":"xxxxxxxxxxxx","method":"GET","path":"/v1/invoices","status_code":200,"request_id":"req_7f3a9c1e2b4d"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"created_at":{"type":"string"},"token_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"token_name":{"type":"string"},"token_public_id":{"type":"string"},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"path":{"type":"string"},"status_code":{"type":["integer","null"]},"request_id":{"type":["string","null"]}},"required":["id","created_at","token_id","token_name","token_public_id","method","path","status_code","request_id"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents":{"get":{"summary":"Dokumente","description":"Dokumente Ihrer Organisation — Mieterdokumente (Mieterakte) und Standortdateien — mit **Erstellungsdatum** im Zeitraum, neueste zuerst. Zeitfilter: genau eine Form aus `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (`to` ausgeschlossen); ohne Angabe gelten die letzten 30 Tage (Tagesgrenzen in Europe/Berlin), mehrere Formen liefern 400 `period_conflict`, ein umgekehrter Zeitraum 400 `range_invalid`. Filter: `tenant_id`, `lease_id`, `location_id`, `category`. `tenant_id`, `lease_id` und `category` betreffen nur Mieterdokumente (dann erscheinen keine Standortdateien); `location_id` liefert die Standortdateien und die Mieterdokumente von Verträgen dieses Standorts. Mit `next_cursor` weiterblättern. **Sichtbar** sind Dokumente der sechs Hauptordner der Mieterakte, nicht archiviert und ohne Altkategorien (`category`: damages, communication, contract_data, handover, invoices, other); andere Arten (etwa Ausweise oder Bonitätsunterlagen) erscheinen nie. Das Final-PDF einer stornierten Schlussabrechnung bleibt sichtbar und trägt `settlement_cancelled = true`. Übergabeprotokolle, die nur als Protokoll hinterlegt sind, und Dokumente anderer Bereiche (z. B. Interessenten) gehören nicht dazu. Es gibt nur Metadaten: **nie** Speicherpfad, Bucket oder Datei-Adresse. `file_available = false` heißt, dass zur Zeile keine gültig hinterlegte Datei existiert. Die Datei selbst gibt es nur über `POST /v1/documents/{id}/download-link`. Das Token sieht die ganze Organisation (keine Standortgrenzen).\n\nScope: `documents:read` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["damages","communication","contract_data","handover","invoices","other"]},"required":false,"name":"category","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f","source":"tenant","category":"contract_data","folder":null,"file_name":"Mietvertrag HH01-0042.pdf","file_size":184320,"mime_type":"application/pdf","created_at":"2026-09-18T09:41:12.000Z","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","file_available":true,"settlement_cancelled":false}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"source":{"type":"string","enum":["tenant","location"]},"category":{"type":["string","null"],"enum":["damages","communication","contract_data","handover","invoices","other",null]},"folder":{"type":["string","null"]},"file_name":{"type":"string"},"file_size":{"type":["integer","null"]},"mime_type":{"type":["string","null"]},"created_at":{"type":"string"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_available":{"type":"boolean"},"settlement_cancelled":{"type":"boolean"}},"required":["id","source","category","folder","file_name","file_size","mime_type","created_at","tenant_id","lease_id","location_id","file_available","settlement_cancelled"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents/{id}":{"get":{"summary":"Ein Dokument (Metadaten)","description":"Wie ein Eintrag aus `/v1/documents`. Unbekannte, fremde oder archivierte Id sowie nicht freigegebene Kategorien: 404 `not_found`.\n\nScope: `documents:read` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Dokuments (aus GET /v1/documents)"},"required":true,"description":"Id des Dokuments (aus GET /v1/documents)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f","source":"tenant","category":"contract_data","folder":null,"file_name":"Mietvertrag HH01-0042.pdf","file_size":184320,"mime_type":"application/pdf","created_at":"2026-09-18T09:41:12.000Z","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","file_available":true,"settlement_cancelled":false},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"source":{"type":"string","enum":["tenant","location"]},"category":{"type":["string","null"],"enum":["damages","communication","contract_data","handover","invoices","other",null]},"folder":{"type":["string","null"]},"file_name":{"type":"string"},"file_size":{"type":["integer","null"]},"mime_type":{"type":["string","null"]},"created_at":{"type":"string"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_available":{"type":"boolean"},"settlement_cancelled":{"type":"boolean"}},"required":["id","source","category","folder","file_name","file_size","mime_type","created_at","tenant_id","lease_id","location_id","file_available","settlement_cancelled"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/documents/{id}/download-link":{"post":{"summary":"Download-Link für ein Dokument","description":"Erzeugt einen **Link, der 5 Minuten gültig ist** (`expires_at`), und liefert ihn in `url`. Den Link nicht speichern, nicht weitergeben und nicht protokollieren: Wer ihn hat, kann die Datei laden. Für eine spätere Anfrage einen neuen Link erzeugen — jeder Aufruf erzeugt einen neuen und zählt als schreibender Aufruf (engeres Kontingent je Token und Minute). Braucht den Zusatz-Scope `documents:download` **und** `documents:read` am Token; der Scope ist als sensibel markiert. Kein Body nötig. Unbekannte, fremde oder nicht freigegebene Dokumente: 404 `not_found`; ein Dokument ohne gültig hinterlegte Datei: 404 `file_not_available`.\n\nScope: `documents:download` (Ersteller braucht: tenants (Lesen), locations (Lesen)).","tags":["Dokumente"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Dokuments (aus GET /v1/documents)"},"required":true,"description":"Id des Dokuments (aus GET /v1/documents)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"document_id":"7c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f","url":"https://<storage-host>/storage/v1/object/sign/…?token=…","expires_at":"2026-10-05T12:05:00.000Z","expires_in_seconds":300,"file_name":"Mietvertrag HH01-0042.pdf","mime_type":"application/pdf"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"document_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"expires_at":{"type":"string"},"expires_in_seconds":{"type":"integer"},"file_name":{"type":"string"},"mime_type":{"type":["string","null"]}},"required":["document_id","url","expires_at","expires_in_seconds","file_name","mime_type"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contractors":{"get":{"summary":"Handwerksbetriebe","description":"Die Handwerksbetriebe (ausführende Firmen) Ihrer Organisation, neueste zuerst: `id`, `name`, `active`, `contact_name` (nur der Name des Ansprechpartners) und `categories` (Kategorien der Artikel, die der Betrieb ausführt; leer, wenn keine zugeordnet ist). Filter: `active` (`true`/`false`). Es gibt bewusst keinen Änderungsfilter: `categories` ergibt sich live aus den Artikeln des Betriebs, `updated_at` meldet nur Änderungen am Firmeneintrag selbst — rufen Sie die (kleine) Liste vollständig ab (so fallen auch gelöschte Betriebe auf). Mit `next_cursor` weiterblättern, auf Wunsch als Datei mit `?format=csv` oder `?format=xlsx`. Der Token sieht die ganze Organisation. **Nie enthalten:** Anschrift, Telefon, E-Mail, Fax, Webseite, Steuernummer, USt-Id, Bankverbindung und Notizen. Voraussetzung beim Ersteller des Tokens: die Rechte Artikel, Garagen/Einheiten und Vermietungsprozess, jeweils mindestens Lesen (die Aufträge zeigen Schadensdaten).\n\nScope: `contractors:read` (Ersteller braucht: admin_articles (Lesen), storage_units (Lesen), leasing_process (Lesen)).","tags":["Handwerker"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"active","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"3b1f6c2e-8a47-4d9b-9c15-e2a07f4d6b38","name":"Malerbetrieb Muster GmbH","active":true,"contact_name":"Erika Beispiel","categories":["Malerarbeiten","Bodenbeläge"],"created_at":"2026-09-12T08:21:05.482113+00:00","updated_at":"2026-10-02T09:40:17.100245+00:00"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"name":{"type":"string"},"active":{"type":"boolean"},"contact_name":{"type":["string","null"]},"categories":{"type":"array","items":{"type":"string"}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","name","active","contact_name","categories","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contractor-orders":{"get":{"summary":"Aufträge an Handwerker","description":"Die Reparatur-Aufträge Ihrer Organisation an Handwerker, neueste zuerst — ein Auftrag je Schadensposition. Je Auftrag: `status` (`not_sent` = noch nicht oder nicht mehr versendet, `sent` = versendet bzw. von Hand als versendet markiert, `failed` = Versand fehlgeschlagen), `order_kind` (`time_and_material` = nach Aufwand, `quote_request` = Kostenvoranschlag angefragt), Zeitpunkte `created_at` (Anlage), `sent_at` (Versand, das Auftragsdatum) und `updated_at` (letzte Änderung von Auftrag oder Position), der Betrieb (`contractor_id` aus `/v1/contractors`, bei einer frei erfassten externen Firma leer; `company_name`), der Bezug (`damage_id`, `unit_id`, `location_id` — nur Kennungen; bei Schäden aus Übergabeprotokollen ist `damage_id` die Kennung des Protokollschadens, bei Schäden an Parkflächen ist `unit_id` leer) und die Position (`item_name`, `quantity`, `unit`, `unit_price` netto, `vat_rate`, `is_time_and_material`, `amount_net` = Menge × Einzelpreis, auf 2 Stellen gerundet; leer bei Abrechnung nach Aufwand oder ohne Preis). **Zeitfilter** auf den Anlagezeitpunkt: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage**; alles gibt es nur mit `period=all`. Tage gelten in der Zeitzone Europe/Berlin. Zusätzlich `updated_since` für Änderungen (Auftrag, Position und, solange der Name nicht aus dem Versand stammt, der Betrieb; einschließlich; `YYYY-MM-DD` = Beginn des Tages in Europe/Berlin oder ein ISO-Zeitpunkt). **Allein angegeben, gilt kein Anlage-Zeitraum** (auch nicht die 30 Tage) — so erscheint ein vor Monaten angelegter, heute versendeter Auftrag; zusammen mit `period`, `date` oder `from`/`to` gilt beides (Schnittmenge). **Gelöschte Aufträge** meldet `updated_since` nicht (die Verwaltung kann eine Schadensposition samt Auftrag löschen): gleichen Sie den Bestand regelmäßig mit einem vollständigen Abruf (`period=all`, seitenweise) ab und entfernen Sie Kennungen, die nicht mehr erscheinen. Weitere Filter: `contractor_id`, `status`, `location_id`, `unit_id`; eine fremde oder unbekannte Id → 404 `not_found`. Mit `next_cursor` weiterblättern, auf Wunsch als Datei mit `?format=csv` oder `?format=xlsx`. **Nie enthalten:** Empfängeradresse, Fehlertexte, Versandprotokolle, Anhänge, Begründungen zu Preisänderungen und Nutzerkennungen.\n\nScope: `contractors:read` (Ersteller braucht: admin_articles (Lesen), storage_units (Lesen), leasing_process (Lesen)).","tags":["Handwerker"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string"},"required":false,"name":"updated_since","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"contractor_id","in":"query"},{"schema":{"type":"string","enum":["not_sent","sent","failed"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"unit_id","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"8e2d4a61-5b73-4c0f-a9d8-1f6e3b7c2a45","status":"sent","order_kind":"time_and_material","created_at":"2026-10-02T07:15:42.318204+00:00","updated_at":"2026-10-02T07:16:03.774512+00:00","sent_at":"2026-10-02T07:16:03.774512+00:00","sent_manually":false,"contractor_id":"3b1f6c2e-8a47-4d9b-9c15-e2a07f4d6b38","company_name":"Malerbetrieb Muster GmbH","damage_id":"c4a9e8d2-1b36-4f75-8e0a-9d2c5b7f1a63","unit_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","location_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","item_name":"Wandfläche streichen","quantity":12.5,"unit":"m²","unit_price":8.4,"vat_rate":19,"is_time_and_material":false,"amount_net":105}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["not_sent","sent","failed"]},"order_kind":{"type":["string","null"],"enum":["time_and_material","quote_request",null]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"sent_at":{"type":["string","null"]},"sent_manually":{"type":"boolean"},"contractor_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"company_name":{"type":["string","null"]},"damage_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"item_name":{"type":"string"},"quantity":{"type":"number"},"unit":{"type":["string","null"]},"unit_price":{"type":["number","null"]},"vat_rate":{"type":"number"},"is_time_and_material":{"type":"boolean"},"amount_net":{"type":["number","null"]}},"required":["id","status","order_kind","created_at","updated_at","sent_at","sent_manually","contractor_id","company_name","damage_id","unit_id","location_id","item_name","quantity","unit","unit_price","vat_rate","is_time_and_material","amount_net"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/units":{"get":{"summary":"Einheiten und Garagen","description":"Alle Einheiten (Garagen, Stellplätze) Ihrer Organisation mit Standort, Garagentyp, Maßen, Ausstattung, **Status**, aktuellem **Mieter als Kurzangabe** (Kennung und Anzeigename), **Grundmiete** und **Zählern**, zuletzt geänderte zuerst. Filter: `location_id`, `storage_type_id`, `status` (`available`, `reserved`, `rented`, `blocked`). **Zeitfilter** auf die letzte Änderung der Einheit (`updated_at`): genau eine der Formen `period`, `date` oder `from`/`to` (wie bei den übrigen Listen); **ohne Angabe gibt es keinen Zeitfilter** — die Liste ist vollständig, seitenweise über `next_cursor`. Mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. Unbekannter oder fremder Standort bzw. Garagentyp → 404. **Status:** `reserved` gilt bei einer Reservierung nur, solange eine aktive, nicht abgelaufene Reservierung besteht; eine abgelaufene, noch nicht freigegebene Reservierung erscheint bereits als `available`. Manuell oder durch einen Vertragsentwurf reservierte Einheiten bleiben `reserved`. **Aktueller Vertrag** (`lease_id`, `tenant`, `current_rent`) ist der laufende Vertrag am heutigen Tag (inklusive Kündigungs- und Auszugsphase, ohne künftige Verträge); `current_rent` ist die Grundmiete laut heute gültigem Kostensatz des Vertrags (netto, Steuersatz als Bruch, brutto auf Cent gerundet; ohne Nebenkosten und Kaution) und fehlt (`null`) ohne Vertrag. `tenant` enthält nie Adresse, E-Mail oder Telefon. `meters` sind die aktiven Zähler der Einheit. Maße und Fläche stammen von der Einheit, sonst vom Garagentyp. `updated_at` ändert sich nur, wenn die Einheit selbst geändert wird — nicht bei neuem Vertrag oder Mieterwechsel; für aktuelle Belegung die Liste regelmäßig vollständig abrufen. Der Token sieht die ganze Organisation.\n\nScope: `units:read` (Ersteller braucht: storage_units (Lesen), locations (Lesen)).","tags":["Einheiten"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"storage_type_id","in":"query"},{"schema":{"type":"string","enum":["available","reserved","rented","blocked"]},"required":false,"name":"status","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5b1e7c3a-2d49-4f60-9a8b-0c7d6e5f4a31","number":"A-14","location_id":"3f2a1b0c-9d8e-4f7a-8b6c-5d4e3f2a1b0c","location_name":"Garagenpark Nord","storage_type_id":"8e7d6c5b-4a39-4281-9706-f5e4d3c2b1a0","storage_type_name":"Einzelgarage","area":18.5,"width":3,"depth":6,"height":2.4,"has_water":false,"is_insulated":true,"has_electricity":true,"has_high_voltage":false,"status":"rented","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant":{"id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","display_name":"Erika Muster"},"current_rent":{"net":85,"vat_rate":0.19,"gross":101.15},"meters":[{"id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","type":"electricity","meter_number":"EZ-004711"}],"created_at":"2025-03-01T08:00:00.123456+00:00","updated_at":"2026-09-28T14:21:07.654321+00:00"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"number":{"type":"string"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_name":{"type":"string"},"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"storage_type_name":{"type":["string","null"]},"area":{"type":["number","null"]},"width":{"type":["number","null"]},"depth":{"type":["number","null"]},"height":{"type":["number","null"]},"has_water":{"type":"boolean"},"is_insulated":{"type":"boolean"},"has_electricity":{"type":"boolean"},"has_high_voltage":{"type":"boolean"},"status":{"type":"string","enum":["available","reserved","rented","blocked"]},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant":{"type":["object","null"],"properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"display_name":{"type":["string","null"]}},"required":["id","display_name"]},"current_rent":{"type":["object","null"],"properties":{"net":{"type":"number"},"vat_rate":{"type":["number","null"]},"gross":{"type":["number","null"]}},"required":["net","vat_rate","gross"]},"meters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string"},"meter_number":{"type":["string","null"]}},"required":["id","type","meter_number"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","number","location_id","location_name","storage_type_id","storage_type_name","area","width","depth","height","has_water","is_insulated","has_electricity","has_high_voltage","status","lease_id","tenant","current_rent","meters","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/units/{id}":{"get":{"summary":"Eine Einheit","description":"Wie ein Eintrag aus `/v1/units`. Unbekannte oder fremde Id: 404 `not_found`.\n\nScope: `units:read` (Ersteller braucht: storage_units (Lesen), locations (Lesen)).","tags":["Einheiten"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id der Einheit (aus GET /v1/units)"},"required":true,"description":"Id der Einheit (aus GET /v1/units)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"5b1e7c3a-2d49-4f60-9a8b-0c7d6e5f4a31","number":"A-14","location_id":"3f2a1b0c-9d8e-4f7a-8b6c-5d4e3f2a1b0c","location_name":"Garagenpark Nord","storage_type_id":"8e7d6c5b-4a39-4281-9706-f5e4d3c2b1a0","storage_type_name":"Einzelgarage","area":18.5,"width":3,"depth":6,"height":2.4,"has_water":false,"is_insulated":true,"has_electricity":true,"has_high_voltage":false,"status":"rented","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant":{"id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","display_name":"Erika Muster"},"current_rent":{"net":85,"vat_rate":0.19,"gross":101.15},"meters":[{"id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","type":"electricity","meter_number":"EZ-004711"}],"created_at":"2025-03-01T08:00:00.123456+00:00","updated_at":"2026-09-28T14:21:07.654321+00:00"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"number":{"type":"string"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_name":{"type":"string"},"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"storage_type_name":{"type":["string","null"]},"area":{"type":["number","null"]},"width":{"type":["number","null"]},"depth":{"type":["number","null"]},"height":{"type":["number","null"]},"has_water":{"type":"boolean"},"is_insulated":{"type":"boolean"},"has_electricity":{"type":"boolean"},"has_high_voltage":{"type":"boolean"},"status":{"type":"string","enum":["available","reserved","rented","blocked"]},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant":{"type":["object","null"],"properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"display_name":{"type":["string","null"]}},"required":["id","display_name"]},"current_rent":{"type":["object","null"],"properties":{"net":{"type":"number"},"vat_rate":{"type":["number","null"]},"gross":{"type":["number","null"]}},"required":["net","vat_rate","gross"]},"meters":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string"},"meter_number":{"type":["string","null"]}},"required":["id","type","meter_number"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","number","location_id","location_name","storage_type_id","storage_type_name","area","width","depth","height","has_water","is_insulated","has_electricity","has_high_voltage","status","lease_id","tenant","current_rent","meters","created_at","updated_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contracts":{"get":{"summary":"Verträge","description":"Mietverträge Ihrer Organisation mit Laufzeit, Status, Kaution, Kündigungen, Nachträgen (Strom/Wasser) und Unterschriftsstand, zuletzt geänderte zuerst. **Zeitfilter** auf die letzte Änderung (`updated_at`: der Vertrag selbst, eine Kündigung, ein Nachtrag oder eine Unterschrift/Gegenzeichnung): genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage** — für alle Verträge `period=all` (seitenweise über `next_cursor`); für einen Abgleich seit einem Zeitpunkt `from=<Zeitpunkt>`. **Grenze des Abgleichs:** `updated_at` erfasst neue und geänderte Verträge, Kündigungen, Nachträge und Unterschriften, nicht aber das Zurücksetzen einer Gegenzeichnung, das Löschen einer Kündigung oder eines Nachtrags und gelöschte Verträge — für einen lückenlosen Abgleich nutzen Sie den Änderungsstrom (`GET /v1/contracts/changes`, siehe `changes/cursor` und `by-ids`). Tage gelten in der Zeitzone Europe/Berlin. Filter: `tenant_id`, `location_id` (Verträge an Garagen des Standorts), `status` (Vertragsstatus). Unbekannter Mieter oder Standort der eigenen Organisation → 404. Der Token sieht die ganze Organisation. **Unterschrift:** `signature.tenant_signed`/`tenant_signed_at` (jüngste Unterschrift des Mieters), `countersigned`/`countersigned_at` (alle unterschriebenen Dokumente von der Verwaltung gegengezeichnet), `signed_documents` (Hauptvertrag und Anlagen). Das unterschriebene PDF ist nicht Teil dieses Endpunkts. **Nachträge:** `effective_date` ist der geplante (`planned`) bzw. ausgeführte Tag (`completed`, `confirmed`); Anfragen, Ablehnungen und Stornos haben keins. **Was nie erscheint:** der Vertragstext und -Snapshot, Hashes, IP und Gerät der Unterschrift, Dateipfade, Freitexte und Notizen der Kündigung, Bank- und Ausweisdaten. Verträge, die zum Löschen vorgemerkt sind, erscheinen nicht. Ausgabe auch als `?format=csv` oder `?format=xlsx` (Kündigungen und Nachträge als JSON-Text in einer Zelle).\n\nScope: `contracts:read` (Ersteller braucht: leasing_process (Lesen), tenants (Lesen)).","tags":["Verträge"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["contract_created","contract_open","contract_reviewed","pending_signature","contract_signed","payment_pending","payment_received","movein_protocol_pending","movein_protocol_completed","lease_active","termination_received","moveout_protocol_pending","moveout_protocol_completed","settlement_pending","completed","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"V-2026-0042","status":"termination_received","lease_start":"2025-04-01","lease_end":"2026-12-31","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","unit_id":"3a7d1e55-2b9c-4f60-8d14-6c0e9b2a7f31","location_id":"5e2f8c10-7a3b-4d96-b1c8-0f4e6d2a9b73","deposit_amount":450,"notice_period_months":3,"minimum_lease_months":12,"signature":{"tenant_signed":true,"tenant_signed_at":"2025-03-12T09:41:07.512330+00:00","countersigned":true,"countersigned_at":"2025-03-13T14:02:55.108421+00:00","signed_documents":3},"terminations":[{"id":"c41e7f2a-98b3-4d05-a6e1-2b7c3d9f0e18","status":"confirmed","type":"ordinary","terminated_by":"tenant","termination_date":"2026-09-15","requested_end_date":"2026-12-31","end_date":"2026-12-31","decided_at":"2026-09-16T08:20:11.004512+00:00","created_at":"2026-09-15T18:03:27.771902+00:00"}],"supplementary_agreements":[{"id":"e8a05b31-6c2d-4f79-9d83-1a4b7c0e5f26","resource_type":"electricity","agreement_type":"activation","status":"completed","requested_date":"2025-05-01","effective_date":"2025-05-06","created_at":"2025-04-28T10:15:44.201733+00:00"}],"created_at":"2025-03-10T12:00:00.000000+00:00","updated_at":"2026-09-16T08:20:11.004512+00:00"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"status":{"type":"string","enum":["contract_created","contract_open","contract_reviewed","pending_signature","contract_signed","payment_pending","payment_received","movein_protocol_pending","movein_protocol_completed","lease_active","termination_received","moveout_protocol_pending","moveout_protocol_completed","settlement_pending","completed","cancelled"]},"lease_start":{"type":["string","null"]},"lease_end":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"deposit_amount":{"type":["number","null"]},"notice_period_months":{"type":["integer","null"]},"minimum_lease_months":{"type":["integer","null"]},"signature":{"type":"object","properties":{"tenant_signed":{"type":"boolean"},"tenant_signed_at":{"type":["string","null"]},"countersigned":{"type":"boolean"},"countersigned_at":{"type":["string","null"]},"signed_documents":{"type":"integer"}},"required":["tenant_signed","tenant_signed_at","countersigned","countersigned_at","signed_documents"]},"terminations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","confirmed","rejected","withdrawn","revoked"]},"type":{"type":["string","null"],"enum":["ordinary","extraordinary","without_notice",null]},"terminated_by":{"type":"string","enum":["tenant","landlord"]},"termination_date":{"type":["string","null"]},"requested_end_date":{"type":["string","null"]},"end_date":{"type":["string","null"]},"decided_at":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","status","type","terminated_by","termination_date","requested_end_date","end_date","decided_at","created_at"]}},"supplementary_agreements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"resource_type":{"type":"string","enum":["electricity","water"]},"agreement_type":{"type":"string","enum":["activation","deactivation"]},"status":{"type":"string","enum":["requested","planned","completed","confirmed","rejected","cancelled"]},"requested_date":{"type":["string","null"]},"effective_date":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","resource_type","agreement_type","status","requested_date","effective_date","created_at"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","contract_number","status","lease_start","lease_end","tenant_id","unit_id","location_id","deposit_amount","notice_period_months","minimum_lease_months","signature","terminations","supplementary_agreements","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/contracts/{id}":{"get":{"summary":"Ein Vertrag","description":"Wie ein Eintrag aus `/v1/contracts`. Unbekannte oder fremde Id sowie ein zum Löschen vorgemerkter Vertrag: 404 `not_found`.\n\nScope: `contracts:read` (Ersteller braucht: leasing_process (Lesen), tenants (Lesen)).","tags":["Verträge"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Vertrags (aus GET /v1/contracts)"},"required":true,"description":"Id des Vertrags (aus GET /v1/contracts)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","contract_number":"V-2026-0042","status":"termination_received","lease_start":"2025-04-01","lease_end":"2026-12-31","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","unit_id":"3a7d1e55-2b9c-4f60-8d14-6c0e9b2a7f31","location_id":"5e2f8c10-7a3b-4d96-b1c8-0f4e6d2a9b73","deposit_amount":450,"notice_period_months":3,"minimum_lease_months":12,"signature":{"tenant_signed":true,"tenant_signed_at":"2025-03-12T09:41:07.512330+00:00","countersigned":true,"countersigned_at":"2025-03-13T14:02:55.108421+00:00","signed_documents":3},"terminations":[{"id":"c41e7f2a-98b3-4d05-a6e1-2b7c3d9f0e18","status":"confirmed","type":"ordinary","terminated_by":"tenant","termination_date":"2026-09-15","requested_end_date":"2026-12-31","end_date":"2026-12-31","decided_at":"2026-09-16T08:20:11.004512+00:00","created_at":"2026-09-15T18:03:27.771902+00:00"}],"supplementary_agreements":[{"id":"e8a05b31-6c2d-4f79-9d83-1a4b7c0e5f26","resource_type":"electricity","agreement_type":"activation","status":"completed","requested_date":"2025-05-01","effective_date":"2025-05-06","created_at":"2025-04-28T10:15:44.201733+00:00"}],"created_at":"2025-03-10T12:00:00.000000+00:00","updated_at":"2026-09-16T08:20:11.004512+00:00"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"contract_number":{"type":["string","null"]},"status":{"type":"string","enum":["contract_created","contract_open","contract_reviewed","pending_signature","contract_signed","payment_pending","payment_received","movein_protocol_pending","movein_protocol_completed","lease_active","termination_received","moveout_protocol_pending","moveout_protocol_completed","settlement_pending","completed","cancelled"]},"lease_start":{"type":["string","null"]},"lease_end":{"type":["string","null"]},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"deposit_amount":{"type":["number","null"]},"notice_period_months":{"type":["integer","null"]},"minimum_lease_months":{"type":["integer","null"]},"signature":{"type":"object","properties":{"tenant_signed":{"type":"boolean"},"tenant_signed_at":{"type":["string","null"]},"countersigned":{"type":"boolean"},"countersigned_at":{"type":["string","null"]},"signed_documents":{"type":"integer"}},"required":["tenant_signed","tenant_signed_at","countersigned","countersigned_at","signed_documents"]},"terminations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","confirmed","rejected","withdrawn","revoked"]},"type":{"type":["string","null"],"enum":["ordinary","extraordinary","without_notice",null]},"terminated_by":{"type":"string","enum":["tenant","landlord"]},"termination_date":{"type":["string","null"]},"requested_end_date":{"type":["string","null"]},"end_date":{"type":["string","null"]},"decided_at":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","status","type","terminated_by","termination_date","requested_end_date","end_date","decided_at","created_at"]}},"supplementary_agreements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"resource_type":{"type":"string","enum":["electricity","water"]},"agreement_type":{"type":"string","enum":["activation","deactivation"]},"status":{"type":"string","enum":["requested","planned","completed","confirmed","rejected","cancelled"]},"requested_date":{"type":["string","null"]},"effective_date":{"type":["string","null"]},"created_at":{"type":"string"}},"required":["id","resource_type","agreement_type","status","requested_date","effective_date","created_at"]}},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","contract_number","status","lease_start","lease_end","tenant_id","unit_id","location_id","deposit_amount","notice_period_months","minimum_lease_months","signature","terminations","supplementary_agreements","created_at","updated_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/tenants/{id}/timeline":{"get":{"summary":"Zeitleiste eines Mieters","description":"Ereignisse zu EINEM Mieter aus E-Mail-Verlauf, Mahnungen, Zahlungen, Dokumenten und Vertrag in einer Liste, neueste zuerst. **Datenschutz:** Eine Quelle erscheint nur, wenn das Token ZUSÄTZLICH ihren Lese-Scope hat — `emails:read` (E-Mails), `dunning:read` (Mahnungen), `payments:read` (Zahlungen), `documents:read` (Dokumente), `contracts:read` (Vertrag). `timeline:read` allein liefert eine leere Liste (200, `sources: []`), keinen Fehler. Die Zusatz-Scopes der Einzel-Endpunkte (`emails:read_body`, `payments:read_counterparty`, `documents:download`) gelten hier nicht: Die Zeitleiste enthält nur Kurzangaben — nie Volltext, Gegenpartei, Betrag, Dateipfad oder Download-Link; Details stehen im jeweiligen Einzel-Endpunkt (über `object_id`). `sources` nennt die Quellen, die für Ihr Token enthalten sind. Jedes Ereignis erscheint nur, wenn der Einzel-Endpunkt es für dasselbe Token auch zeigt. **Ereignisse und Zeitpunkt (`occurred_at`):** `email_sent` (Versand der E-Mail), `dunning_notice_issued` (Ausstellungsdatum der Mahnung, Beginn des Tages in Europe/Berlin), `payment_received` (Buchungsdatum des Zahlungseingangs, Beginn des Tages in Europe/Berlin; nur Zahlungen, die dem Mieter über eine gespeicherte Zuordnung zu seinem Vertrag zugeordnet sind — nie über Name oder IBAN erraten), `document_added` (Eingang des Dokuments in die Mieterakte), `contract_created` (Anlage des Vertrags), `contract_signed` (jüngste Unterschrift des Mieters), `contract_countersigned` (jüngste Gegenzeichnung, erst wenn alle unterschriebenen Dokumente gegengezeichnet sind), `termination_filed` (Eingang einer Kündigung, `status` = Kündigungsstatus), `supplementary_agreement_filed` (Eingang eines Nachtrags, `status` = Nachtragsstatus; je Vertrag die jüngsten 50 Kündigungen und 100 Nachträge wie in `/v1/contracts`). Mietbeginn und -ende sind keine Ereignisse. **Felder:** `id` (eindeutig, `<Typ>:<Id der Zeile>` — zum Entdoppeln), `source`, `type`, `object_id` (Id des Einzelobjekts; bei Kündigung und Nachtrag der Vertrag), `title` (E-Mail-Betreff, Dateiname, Vertragsnummer; sonst `null`), `status` (E-Mail-Status, Mahnstufe `level_<n>`, Zuordnungsstatus der Zahlung, Dokumentkategorie, Kündigungs-/Nachtragsstatus; sonst `null`). **Zeitfilter** auf `occurred_at`: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage** — für die gesamte Geschichte `period=all` (seitenweise über `next_cursor`; der Cursor merkt sich die Zeitgrenzen der ersten Seite). Tage gelten in der Zeitzone Europe/Berlin. **Blättern:** Die Folgeseite ist kein Schnappschuss; ändert sich zwischen zwei Abrufen ein berechneter Zeitpunkt (z. B. eine neue Unterschrift verschiebt `contract_signed`), kann ein Ereignis fehlen oder doppelt erscheinen — am `id` entdoppeln, bei Bedarf neu abrufen. Unbekannter oder fremder Mieter: 404. Der Token sieht die ganze Organisation. Keine Ausgabe als CSV/Excel.\n\nScope: `timeline:read` (Ersteller braucht: tenants (Lesen)).","tags":["Mieter"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Mieters (z. B. aus offenen Posten oder Mieterlisten)"},"required":true,"description":"Id des Mieters (z. B. aus offenen Posten oder Mieterlisten)","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"termination_filed:c41e7f2a-98b3-4d05-a6e1-2b7c3d9f0e18","occurred_at":"2026-09-15T18:03:27.771902+00:00","source":"contract","type":"termination_filed","object_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","title":"V-2026-0042","status":"requested"},{"id":"payment_received:7d1f3c52-0a4b-4e68-9b21-5c8d7e6f4a30","occurred_at":"2026-09-02T22:00:00.000000+00:00","source":"payment","type":"payment_received","object_id":"7d1f3c52-0a4b-4e68-9b21-5c8d7e6f4a30","title":null,"status":"matched"},{"id":"email_sent:2f6a9d14-83c5-4b07-a1e2-9d3c8b7a6f51","occurred_at":"2026-09-02T07:15:09.482113+00:00","source":"email","type":"email_sent","object_id":"2f6a9d14-83c5-4b07-a1e2-9d3c8b7a6f51","title":"Ihre Zahlungserinnerung","status":"delivered"}],"next_cursor":null,"sources":["email","dunning","payment","document","contract"]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"occurred_at":{"type":"string"},"source":{"type":"string","enum":["email","dunning","payment","document","contract"]},"type":{"type":"string","enum":["email_sent","dunning_notice_issued","payment_received","document_added","contract_created","contract_signed","contract_countersigned","termination_filed","supplementary_agreement_filed"]},"object_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"title":{"type":["string","null"]},"status":{"type":["string","null"]}},"required":["id","occurred_at","source","type","object_id","title","status"]}},"next_cursor":{"type":["string","null"]},"sources":{"type":"array","items":{"type":"string","enum":["email","dunning","payment","document","contract"]}}},"required":["items","next_cursor","sources"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/datev/exports":{"get":{"summary":"DATEV-Exporte (Verlauf)","description":"Die über die API angeforderten DATEV-Exporte Ihrer Organisation mit **Anlagezeitpunkt** im Zeitraum, neueste zuerst: `status` (`requested` = läuft, `ready` = fertig, `failed` = fehlgeschlagen mit `failure_code`), Standort, Jahr und Monat des Buchungsstapels, Format, Zahl der Buchungssätze, Größe und ob die Datei noch abrufbar ist. Zeitfilter: genau eine Form aus `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); ohne Angabe gelten die letzten 30 Tage (Tagesgrenzen in Europe/Berlin), mehrere Formen liefern 400 `period_conflict`, ein umgekehrter Zeitraum 400 `range_invalid`. Filter: `status` und `location_id`. Mit `next_cursor` weiterblättern. Es erscheinen nur Exporte, die über die API angefordert wurden — keine aus der Verwaltung. Nie enthalten: Dateiname, Speicherort, Buchungsdaten.\n\nScope: `datev:export` (Ersteller braucht: accounting_financial (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","enum":["requested","ready","failed"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2f6c1d3e-8a4b-4c5d-9e7f-0a1b2c3d4e5f","status":"ready","format":"datev","encoding":"windows-1252","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","year":2026,"month":9,"row_count":184,"failure_code":null,"file_available":true,"file_size":23871,"file_expires_at":"2026-10-11T08:14:22.000Z","created_at":"2026-10-10T08:14:20.481516Z","completed_at":"2026-10-10T08:14:22.000Z"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","ready","failed"]},"format":{"type":"string","enum":["datev","csv"]},"encoding":{"type":"string","enum":["windows-1252","utf-8"]},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"year":{"type":"integer"},"month":{"type":"integer"},"row_count":{"type":["integer","null"]},"failure_code":{"type":["string","null"],"enum":["datev_stammdaten_unvollstaendig","datev_bu_key_invalid","no_items_in_batch","export_changed_retry","storage_failed","timeout","internal_error",null]},"file_available":{"type":"boolean"},"file_size":{"type":["integer","null"]},"file_expires_at":{"type":["string","null"]},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]}},"required":["id","status","format","encoding","location_id","year","month","row_count","failure_code","file_available","file_size","file_expires_at","created_at","completed_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"DATEV-Export anfordern","description":"Exportiert den **Buchungsstapel** eines Standorts für einen Monat (`location_id`, `year`, `month`) — mit demselben Exportlauf wie der DATEV-Export in der Verwaltung (Finanzen), also mit denselben Steuerschlüsseln, derselben Festschreibungs-Kennzeichnung und denselben Prüfungen. `format`: `datev` (Standard, DATEV-Buchungsstapel im EXTF-Format, Zeichensatz Windows-1252, braucht Berater- und Mandantennummer am Standort) oder `csv` (einfaches CSV, UTF-8 mit BOM). Der Export läuft **synchron**: Die Antwort (201) nennt den abgeschlossenen Export. `status = ready`: die Datei liegt **24 Stunden** zum Abruf bereit (`POST /v1/datev/exports/{id}/download-link`). `status = failed`: `failure_code` nennt den Grund (`datev_stammdaten_unvollstaendig`, `datev_bu_key_invalid`, `no_items_in_batch`, `export_changed_retry`, `storage_failed`, `internal_error`); Einzelheiten zu abgelehnten Buchungen stehen nur in der Verwaltung. Nach der Korrektur mit einem neuen `Idempotency-Key` erneut anfordern. Der Export **schreibt nichts in die Buchhaltung** (nur der Verlauf wird festgehalten) und liefert den aktuellen Stand des Stapels. Der Kopf `Idempotency-Key` ist Pflicht: gleicher Schlüssel mit gleichem Inhalt liefert denselben Export (200), mit anderem Inhalt 409 `idempotency_conflict`. Für den Standort und Monat gibt es keinen Buchungsstapel, oder der Standort ist unbekannt oder fremd: 404 `not_found`. Höchstens 30 neue Exporte je Organisation und Stunde (429 `rate_limited`, `Retry-After`). Der Aufruf zählt als schreibender Aufruf (engeres Kontingent je Token und Minute). Das Token sieht die ganze Organisation (keine Standortgrenzen); der Export enthält die Buchungsdaten des Stapels — das Token deshalb nur an Systeme geben, die sie sehen dürfen.\n\nScope: `datev:export` (Ersteller braucht: accounting_financial (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","year":2026,"month":9,"format":"datev"},"schema":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"year":{"type":"integer","minimum":2020,"maximum":2099},"month":{"type":"integer","minimum":1,"maximum":12},"format":{"type":"string","enum":["datev","csv"],"default":"datev"}},"required":["location_id","year","month"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1d3e-8a4b-4c5d-9e7f-0a1b2c3d4e5f","status":"ready","format":"datev","encoding":"windows-1252","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","year":2026,"month":9,"row_count":184,"failure_code":null,"file_available":true,"file_size":23871,"file_expires_at":"2026-10-11T08:14:22.000Z","created_at":"2026-10-10T08:14:20.481516Z","completed_at":"2026-10-10T08:14:22.000Z"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","ready","failed"]},"format":{"type":"string","enum":["datev","csv"]},"encoding":{"type":"string","enum":["windows-1252","utf-8"]},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"year":{"type":"integer"},"month":{"type":"integer"},"row_count":{"type":["integer","null"]},"failure_code":{"type":["string","null"],"enum":["datev_stammdaten_unvollstaendig","datev_bu_key_invalid","no_items_in_batch","export_changed_retry","storage_failed","timeout","internal_error",null]},"file_available":{"type":"boolean"},"file_size":{"type":["integer","null"]},"file_expires_at":{"type":["string","null"]},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]}},"required":["id","status","format","encoding","location_id","year","month","row_count","failure_code","file_available","file_size","file_expires_at","created_at","completed_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1d3e-8a4b-4c5d-9e7f-0a1b2c3d4e5f","status":"ready","format":"datev","encoding":"windows-1252","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","year":2026,"month":9,"row_count":184,"failure_code":null,"file_available":true,"file_size":23871,"file_expires_at":"2026-10-11T08:14:22.000Z","created_at":"2026-10-10T08:14:20.481516Z","completed_at":"2026-10-10T08:14:22.000Z"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","ready","failed"]},"format":{"type":"string","enum":["datev","csv"]},"encoding":{"type":"string","enum":["windows-1252","utf-8"]},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"year":{"type":"integer"},"month":{"type":"integer"},"row_count":{"type":["integer","null"]},"failure_code":{"type":["string","null"],"enum":["datev_stammdaten_unvollstaendig","datev_bu_key_invalid","no_items_in_batch","export_changed_retry","storage_failed","timeout","internal_error",null]},"file_available":{"type":"boolean"},"file_size":{"type":["integer","null"]},"file_expires_at":{"type":["string","null"]},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]}},"required":["id","status","format","encoding","location_id","year","month","row_count","failure_code","file_available","file_size","file_expires_at","created_at","completed_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"422":{"description":"Wird von diesem Endpunkt nicht verwendet (Fachfehler: 404, 409 oder im Export selbst als `failure_code`)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/datev/exports/{id}":{"get":{"summary":"Stand eines DATEV-Exports","description":"Wie ein Eintrag aus `/v1/datev/exports`: `status`, Eckdaten und `file_available` (die Datei ist fertig, nicht abgelaufen und abrufbar). Der Export läuft synchron; `requested` sieht nur, wer ihn während des Laufs abfragt — bleibt ein Auftrag länger als 15 Minuten offen, gilt er als `failed` mit `failure_code = timeout`. Die Datei selbst gibt es nur über `POST /v1/datev/exports/{id}/download-link`. Unbekannte oder fremde Id: 404 `not_found`.\n\nScope: `datev:export` (Ersteller braucht: accounting_financial (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Exports (aus POST /v1/datev/exports oder GET /v1/datev/exports)"},"required":true,"description":"Id des Exports (aus POST /v1/datev/exports oder GET /v1/datev/exports)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1d3e-8a4b-4c5d-9e7f-0a1b2c3d4e5f","status":"ready","format":"datev","encoding":"windows-1252","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","year":2026,"month":9,"row_count":184,"failure_code":null,"file_available":true,"file_size":23871,"file_expires_at":"2026-10-11T08:14:22.000Z","created_at":"2026-10-10T08:14:20.481516Z","completed_at":"2026-10-10T08:14:22.000Z"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["requested","ready","failed"]},"format":{"type":"string","enum":["datev","csv"]},"encoding":{"type":"string","enum":["windows-1252","utf-8"]},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"year":{"type":"integer"},"month":{"type":"integer"},"row_count":{"type":["integer","null"]},"failure_code":{"type":["string","null"],"enum":["datev_stammdaten_unvollstaendig","datev_bu_key_invalid","no_items_in_batch","export_changed_retry","storage_failed","timeout","internal_error",null]},"file_available":{"type":"boolean"},"file_size":{"type":["integer","null"]},"file_expires_at":{"type":["string","null"]},"created_at":{"type":"string"},"completed_at":{"type":["string","null"]}},"required":["id","status","format","encoding","location_id","year","month","row_count","failure_code","file_available","file_size","file_expires_at","created_at","completed_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/datev/exports/{id}/download-link":{"post":{"summary":"Download-Link für einen DATEV-Export","description":"Erzeugt einen **Link, der höchstens 5 Minuten gültig ist** (`expires_at`; nie über das Ende der Aufbewahrung der Datei hinaus, `expires_in_seconds` nennt die Dauer), und liefert ihn in `url`. Den Link nicht speichern, nicht weitergeben und nicht protokollieren: Wer ihn hat, kann die Datei laden — sie enthält die Buchungsdaten des Stapels. `encoding` nennt den Zeichensatz der Datei (`windows-1252` bei `datev`, `utf-8` bei `csv`). Für eine spätere Anfrage einen neuen Link erzeugen — jeder Aufruf erzeugt einen neuen und zählt als schreibender Aufruf (engeres Kontingent je Token und Minute). Kein Body nötig. Die Datei liegt 24 Stunden nach dem Export bereit. Der Export ist noch nicht fertig: 409 `export_not_ready`. Der Export ist fehlgeschlagen, die Datei abgelaufen oder entfernt: 404 `file_not_available`. Unbekannte oder fremde Id: 404 `not_found`.\n\nScope: `datev:export` (Ersteller braucht: accounting_financial (Lesen)).","tags":["Finanzen"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Exports (aus POST /v1/datev/exports oder GET /v1/datev/exports)"},"required":true,"description":"Id des Exports (aus POST /v1/datev/exports oder GET /v1/datev/exports)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"export_id":"2f6c1d3e-8a4b-4c5d-9e7f-0a1b2c3d4e5f","url":"https://<storage-host>/storage/v1/object/sign/…?token=…","expires_at":"2026-10-10T08:19:22.000Z","expires_in_seconds":300,"file_name":"datev_2026-09_2f6c1d3e.csv","mime_type":"text/csv","encoding":"windows-1252"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"export_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"expires_at":{"type":"string"},"expires_in_seconds":{"type":"integer"},"file_name":{"type":"string"},"mime_type":{"type":"string"},"encoding":{"type":"string","enum":["windows-1252","utf-8"]}},"required":["export_id","url","expires_at","expires_in_seconds","file_name","mime_type","encoding"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Der Export ist noch nicht fertig (`export_not_ready`)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/prospects":{"get":{"summary":"Interessenten-Anfragen","description":"Mietanfragen von Interessenten (aus dem öffentlichen Formular, dem Mieterportal oder per API), neueste zuerst. **Zeitfilter** auf den Anfragezeitpunkt: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage**; alles gibt es nur mit `period=all` (seitenweise über `next_cursor`). Tage gelten in der Zeitzone Europe/Berlin. Filter: `location_id` (Anfragen mit Wunsch für diesen Standort), `storage_type_id` (Garagentyp), `status` (`new`, `open_bank_details`, `bank_details_received`, `contract_ready`, `contract_signing`, `contract_submitted`, `waitlisted`, `converted`, `rejected`, `expired`, `withdrawn`), `source` (`public_form`, `tenant_portal`, `api`) und `updated_since` (ISO-Zeitpunkt; nur Anfragen, die seitdem geändert wurden — kein Änderungsstrom, gelöschte Anfragen erscheinen nicht). Der Token sieht die ganze Organisation. **Datenschutz:** Ausgegeben werden nur Kennung, Status, Herkunft, Zeitpunkte, Name/Firma, Nutzungsart, Mehrfachanmietung, `email_verified` und die gewünschten Standorte und Garagentypen (mit Mietbeginn und Ausstattung) — **nie** E-Mail-Adresse, Telefon, Anschrift, Geburtsdatum, Bank-, Bonitäts- oder Ausweisdaten, Freitexte oder Notizen. Diese Angaben sehen nur Mitarbeitende in der Verwaltung. Auf Wunsch als CSV/Excel (`format`); die Wünsche stehen dann als JSON-Text in einer Zelle.\n\nScope: `prospects:read` (Ersteller braucht: leasing_process (Lesen)).","tags":["Interessenten"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"storage_type_id","in":"query"},{"schema":{"type":"string","enum":["new","open_bank_details","bank_details_received","contract_ready","contract_signing","contract_submitted","waitlisted","converted","rejected","expired","withdrawn"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["public_form","tenant_portal","api"]},"required":false,"name":"source","in":"query"},{"schema":{"type":"string"},"required":false,"name":"updated_since","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"4b7c2e19-8a3d-4f60-9c15-2d8e6a1b7f33","status":"new","source":"api","created_at":"2026-10-09T08:12:31.402117+00:00","updated_at":"2026-10-09T08:12:31.402117+00:00","first_name":"Max","last_name":"Muster","company":null,"usage_type":"private","multiple_rental":false,"unit_count":1,"email_verified":false,"locations":[{"location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","priority":1,"lease_start_date":"2026-11-01","unit_types":[{"storage_type_id":"a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60","priority":1,"power_option":"normalstrom","water_option":false,"status":"new"}]}]}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["new","open_bank_details","bank_details_received","contract_ready","contract_signing","contract_submitted","waitlisted","converted","rejected","expired","withdrawn"]},"source":{"type":"string","enum":["public_form","tenant_portal","api"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"usage_type":{"type":"string"},"multiple_rental":{"type":"boolean"},"unit_count":{"type":["integer","null"]},"email_verified":{"type":"boolean"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer"},"lease_start_date":{"type":["string","null"]},"unit_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":["integer","null"]},"power_option":{"type":["string","null"]},"water_option":{"type":"boolean"},"status":{"type":"string"}},"required":["storage_type_id","priority","power_option","water_option","status"]}}},"required":["location_id","priority","lease_start_date","unit_types"]}}},"required":["id","status","source","created_at","updated_at","first_name","last_name","company","usage_type","multiple_rental","unit_count","email_verified","locations"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Mietanfrage einliefern","description":"Legt eine Mietanfrage an, als hätte die Person das öffentliche Anfrageformular ausgefüllt: **dieselben Feldprüfungen** (Pflichtfelder, Längen, Wertelisten, Telefon oder Mobil, Geburtsdatum und Mietbeginn als echte Kalendertage, Mietbeginn nicht in der Vergangenheit, 1–5 Standorte mit je höchstens 20 Garagentypen, jeder Standort/Garagentyp muss zur Organisation gehören und dort angeboten werden). **`privacy_consent` muss `true` sein** — die Datenschutz-Einwilligung der anfragenden Person; ohne sie 400. `Idempotency-Key` ist Pflicht: derselbe Schlüssel mit demselben Inhalt liefert dieselbe Anfrage (200, auch wenn der Mietbeginn inzwischen verstrichen ist), mit anderem Inhalt 409 `idempotency_conflict`. Bankdaten (`iban`, `bic`, `account_holder`) und `credit_check_consent` werden nicht angenommen (400 `field_not_allowed`) — die erfasst die Verwaltung später. **Besonderheiten gegenüber dem Formular:** Herkunft `source: \"api\"`, die E-Mail-Adresse gilt als **nicht bestätigt** (`email_verified: false`), die API sendet **keine E-Mail** an die anfragende Person (Bestätigung und Einwilligungshinweise sind Sache des Integrators), und es gibt keine automatische Verknüpfung mit einem Mieterportal-Konto. Gehört die E-Mail-Adresse schon einer anderen Person (anderer Name/Geburtsdatum), wird die Anfrage trotzdem angelegt und in der Verwaltung mit einer wichtigen internen Notiz markiert; die Antwort verrät davon nichts (kein Auskunftsloch). **Missbrauchsgrenzen:** höchstens 30 neue Anfragen je Token und Stunde und 5 je E-Mail-Adresse und Token in 24 Stunden (gezählt werden nur eigene API-Einlieferungen) → 429 `rate_limited` mit `Retry-After`. Body höchstens 50 KB. Es erscheinen keine Einmal-Links oder Zugangsdaten in der Antwort; die Antwort hat dieselbe Form wie `GET /v1/prospects/{id}`. Erfordert zusätzlich das Recht Vermietungsprozess mit Bearbeiten beim Ersteller des Tokens.\n\nScope: `prospects:write` (Ersteller braucht: leasing_process (Bearbeiten)).","tags":["Interessenten"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"salutation":"Herr","first_name":"Max","last_name":"Muster","date_of_birth":"1985-06-15","street":"Musterstraße","house_number":"12","postal_code":"20095","city":"Hamburg","country":"Deutschland","mobile":"+49 170 1234567","email":"max.muster@example.com","usage_type":"private","usage_description":"Oldtimer-Einstellplatz","referral_source":"internet","lease_start_date":"2026-11-01","locations":[{"location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","priority":1,"unit_types":[{"storage_type_id":"a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60","priority":1,"power_option":"normalstrom"}]}],"privacy_consent":true},"schema":{"type":"object","properties":{"salutation":{"type":"string","enum":["Herr","Frau","Divers","Herr Dr.","Frau Dr."]},"first_name":{"type":"string","maxLength":100},"last_name":{"type":"string","maxLength":100},"company":{"type":"string","maxLength":200},"date_of_birth":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"street":{"type":"string","maxLength":200},"house_number":{"type":"string","maxLength":20},"postal_code":{"type":"string","maxLength":10},"city":{"type":"string","maxLength":100},"country":{"type":"string","maxLength":100},"phone":{"type":"string","maxLength":30},"mobile":{"type":"string","maxLength":30},"email":{"type":"string","maxLength":254,"format":"email"},"usage_type":{"type":"string","enum":["private","commercial"]},"usage_description":{"type":"string","maxLength":500},"referral_source":{"type":"string","enum":["internet","referral","drove_by","social_media","newspaper","other"]},"multiple_rental":{"type":"boolean","default":false},"unit_count":{"type":"integer","minimum":2,"maximum":50},"lease_start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer","minimum":1,"maximum":20},"lease_start_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"unit_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer","minimum":1,"maximum":50},"power_option":{"type":"string","enum":["none","normalstrom","starkstrom"],"default":"none"},"water_option":{"type":"boolean","default":false}},"required":["storage_type_id","priority"],"additionalProperties":false},"maxItems":20}},"required":["location_id","priority","unit_types"],"additionalProperties":false},"minItems":1,"maxItems":5},"privacy_consent":{"type":"boolean","enum":[true]}},"required":["salutation","first_name","last_name","date_of_birth","street","house_number","postal_code","city","country","email","usage_type","usage_description","referral_source","lease_start_date","locations","privacy_consent"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"4b7c2e19-8a3d-4f60-9c15-2d8e6a1b7f33","status":"new","source":"api","created_at":"2026-10-09T08:12:31.402117+00:00","updated_at":"2026-10-09T08:12:31.402117+00:00","first_name":"Max","last_name":"Muster","company":null,"usage_type":"private","multiple_rental":false,"unit_count":1,"email_verified":false,"locations":[{"location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","priority":1,"lease_start_date":"2026-11-01","unit_types":[{"storage_type_id":"a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60","priority":1,"power_option":"normalstrom","water_option":false,"status":"new"}]}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["new","open_bank_details","bank_details_received","contract_ready","contract_signing","contract_submitted","waitlisted","converted","rejected","expired","withdrawn"]},"source":{"type":"string","enum":["public_form","tenant_portal","api"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"usage_type":{"type":"string"},"multiple_rental":{"type":"boolean"},"unit_count":{"type":["integer","null"]},"email_verified":{"type":"boolean"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer"},"lease_start_date":{"type":["string","null"]},"unit_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":["integer","null"]},"power_option":{"type":["string","null"]},"water_option":{"type":"boolean"},"status":{"type":"string"}},"required":["storage_type_id","priority","power_option","water_option","status"]}}},"required":["location_id","priority","lease_start_date","unit_types"]}}},"required":["id","status","source","created_at","updated_at","first_name","last_name","company","usage_type","multiple_rental","unit_count","email_verified","locations"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"4b7c2e19-8a3d-4f60-9c15-2d8e6a1b7f33","status":"new","source":"api","created_at":"2026-10-09T08:12:31.402117+00:00","updated_at":"2026-10-09T08:12:31.402117+00:00","first_name":"Max","last_name":"Muster","company":null,"usage_type":"private","multiple_rental":false,"unit_count":1,"email_verified":false,"locations":[{"location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","priority":1,"lease_start_date":"2026-11-01","unit_types":[{"storage_type_id":"a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60","priority":1,"power_option":"normalstrom","water_option":false,"status":"new"}]}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["new","open_bank_details","bank_details_received","contract_ready","contract_signing","contract_submitted","waitlisted","converted","rejected","expired","withdrawn"]},"source":{"type":"string","enum":["public_form","tenant_portal","api"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"usage_type":{"type":"string"},"multiple_rental":{"type":"boolean"},"unit_count":{"type":["integer","null"]},"email_verified":{"type":"boolean"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer"},"lease_start_date":{"type":["string","null"]},"unit_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":["integer","null"]},"power_option":{"type":["string","null"]},"water_option":{"type":"boolean"},"status":{"type":"string"}},"required":["storage_type_id","priority","power_option","water_option","status"]}}},"required":["location_id","priority","lease_start_date","unit_types"]}}},"required":["id","status","source","created_at","updated_at","first_name","last_name","company","usage_type","multiple_rental","unit_count","email_verified","locations"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Der Idempotency-Key wurde schon mit anderem Inhalt verwendet (idempotency_conflict)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"422":{"description":"Höchstzahl Importe der Organisation erreicht","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten). `error.details` = `{ limit }` (Stunden- bzw. Tagesgrenze je E-Mail-Adresse); `Retry-After` nennt die Wartezeit.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/prospects/{id}":{"get":{"summary":"Eine Interessenten-Anfrage","description":"Wie ein Eintrag aus `/v1/prospects` (gleiche Felder, kein Kontaktdaten-Zusatz). Unbekannte oder fremde Id: 404 `not_found`.\n\nScope: `prospects:read` (Ersteller braucht: leasing_process (Lesen)).","tags":["Interessenten"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id der Anfrage (aus GET /v1/prospects)"},"required":true,"description":"Id der Anfrage (aus GET /v1/prospects)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"4b7c2e19-8a3d-4f60-9c15-2d8e6a1b7f33","status":"new","source":"api","created_at":"2026-10-09T08:12:31.402117+00:00","updated_at":"2026-10-09T08:12:31.402117+00:00","first_name":"Max","last_name":"Muster","company":null,"usage_type":"private","multiple_rental":false,"unit_count":1,"email_verified":false,"locations":[{"location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","priority":1,"lease_start_date":"2026-11-01","unit_types":[{"storage_type_id":"a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60","priority":1,"power_option":"normalstrom","water_option":false,"status":"new"}]}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["new","open_bank_details","bank_details_received","contract_ready","contract_signing","contract_submitted","waitlisted","converted","rejected","expired","withdrawn"]},"source":{"type":"string","enum":["public_form","tenant_portal","api"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]},"first_name":{"type":"string"},"last_name":{"type":"string"},"company":{"type":["string","null"]},"usage_type":{"type":"string"},"multiple_rental":{"type":"boolean"},"unit_count":{"type":["integer","null"]},"email_verified":{"type":"boolean"},"locations":{"type":"array","items":{"type":"object","properties":{"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":"integer"},"lease_start_date":{"type":["string","null"]},"unit_types":{"type":"array","items":{"type":"object","properties":{"storage_type_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"priority":{"type":["integer","null"]},"power_option":{"type":["string","null"]},"water_option":{"type":"boolean"},"status":{"type":"string"}},"required":["storage_type_id","priority","power_option","water_option","status"]}}},"required":["location_id","priority","lease_start_date","unit_types"]}}},"required":["id","status","source","created_at","updated_at","first_name","last_name","company","usage_type","multiple_rental","unit_count","email_verified","locations"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/waitlist":{"get":{"summary":"Warteliste","description":"Wartelisten-Einträge (Interessenten und Bestandsmieter, die auf eine freie Garage warten). **Zeitfilter** auf den Eintragszeitpunkt: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage**; alles gibt es nur mit `period=all` (seitenweise über `next_cursor`). Tage gelten in der Zeitzone Europe/Berlin. Achtung: Wegen der Vorgabe „letzte 30 Tage“ erscheinen ältere offene Einträge nur mit `period=all`. Filter: `location_id`, `status` (`waiting`, `notified`, `assigned`, `cancelled`). `position` ist der Platz in der Warteliste des Standorts (1 = vorn, wie in der Verwaltung) und nur für offene Einträge (`waiting`, `notified`) gesetzt, sonst `null`. `storage_type_ids` nennt die gewünschten Garagentypen (leer = jeder Typ). `prospect_id` verweist auf `GET /v1/prospects/{id}`, `tenant_id` auf einen Bestandsmieter. **Keine Namen und keine Kontaktdaten.** Auf Wunsch als CSV/Excel (`format`).\n\nScope: `prospects:read` (Ersteller braucht: leasing_process (Lesen)).","tags":["Garagenparks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","enum":["waiting","notified","assigned","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"c91d3a7e-2b45-4e68-a0f3-7b1c5d9e2a48","location_id":"5f1e9b0c-3a7d-4c82-b6e4-9d2a8c7f1e05","status":"waiting","position":3,"created_at":"2026-09-21T14:03:55.118204+00:00","prospect_id":"4b7c2e19-8a3d-4f60-9c15-2d8e6a1b7f33","tenant_id":null,"storage_type_ids":["a3c8d4e2-6b19-4f7a-8e05-1c9b2d3f4a60"]}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["waiting","notified","assigned","cancelled"]},"position":{"type":["integer","null"]},"created_at":{"type":"string"},"prospect_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"storage_type_ids":{"type":"array","items":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}}},"required":["id","location_id","status","position","created_at","prospect_id","tenant_id","storage_type_ids"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/appointments":{"get":{"summary":"Termine","description":"Übergabetermine (Einzug `move_in`, Auszug `move_out`) und allgemeine Termine (`general`, z. B. Besichtigungen) Ihrer Organisation, **zeitlich aufsteigend** (frühester zuerst, bei gleichem Zeitpunkt nach `id`). `date` und `time` gelten in Europe/Berlin; `starts_at` ist daraus der Zeitpunkt (UTC), ohne Uhrzeit der Tagesbeginn. **Zeitfilter** auf den Terminzeitpunkt: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen zugleich → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. **Ohne Angabe gelten die letzten 30 Tage** (vergangene Termine!); für kommende Termine `upcoming=true` (alle ab jetzt, nicht zusammen mit den Zeitfiltern) oder `from=<heute>` verwenden. Filter: `type` (`move_in`, `move_out`, `general`), `status` (`planned`, `confirmed`, `rescheduled`, `completed`, `cancelled`; nur Übergabetermine — allgemeine Termine haben keinen Status und fallen mit diesem Filter weg), `location_id`, `unit_id`, `tenant_id`, `lease_id` (Einheit, Mieter und Vertrag gibt es nur bei Übergabeterminen). Eine fremde oder unbekannte Kennung in einem Filter → 404 `not_found`. Der Token sieht die ganze Organisation. **Was nie erscheint:** der Hausmeister, die Zuständigen allgemeiner Termine, interne Notizen und Änderungsgründe, Übergabefenster, Aufgaben und Zusatzvereinbarungen (keine Termine dieser Schnittstelle) sowie Übergabetermine ohne Datum.\n\nScope: `appointments:read` (Ersteller braucht: calendar (Lesen)).","tags":["Termine"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"upcoming","in":"query"},{"schema":{"type":"string","enum":["move_in","move_out","general"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["planned","confirmed","rescheduled","completed","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"unit_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"3b9d1e6a-7c24-4f58-a1b3-8e2f6c4d9a07","type":"move_in","status":"planned","date":"2026-10-15","time":"10:30","starts_at":"2026-10-15T08:30:00+00:00","duration_minutes":null,"title":null,"description":"Schlüsselübergabe am Tor","location_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","unit_id":"8a1c4e7b-3d52-4b96-8f0a-2c5e9d1b7a34","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","confirmed_by_tenant":false,"created_at":"2026-10-10T09:12:44.318204+00:00","updated_at":null},{"id":"6f2a9c3d-1b84-4e75-9d06-4a8b7c1e5f92","type":"general","status":null,"date":"2026-10-20","time":"14:00","starts_at":"2026-10-20T12:00:00+00:00","duration_minutes":30,"title":"Besichtigung Garage 12","description":"Interessent trifft sich am Haupteingang","location_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","unit_id":null,"lease_id":null,"tenant_id":null,"confirmed_by_tenant":null,"created_at":"2026-10-10T09:15:02.101933+00:00","updated_at":null}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string","enum":["move_in","move_out","general"]},"status":{"type":["string","null"],"enum":["planned","confirmed","rescheduled","completed","cancelled",null]},"date":{"type":"string"},"time":{"type":["string","null"]},"starts_at":{"type":"string"},"duration_minutes":{"type":["integer","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"confirmed_by_tenant":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"required":["id","type","status","date","time","starts_at","duration_minutes","title","description","location_id","unit_id","lease_id","tenant_id","confirmed_by_tenant","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Termin anlegen","description":"Legt einen **Übergabetermin** (`type` = `move_in` oder `move_out`, mit `lease_id`, `date`, `time`) oder einen **allgemeinen Termin** (`type` = `general`, mit `title`, `date`; optional `time`, `location_id`, `description`, `duration_minutes`) an — nach den Regeln der Terminverwaltung (eine Transaktion). Antwort: der angelegte Termin (201). **Übergabetermin:** Vertrag der eigenen Organisation (sonst 404 `not_found`); der Hausmeister ist der Standard-Hausmeister des Standorts (ist keiner hinterlegt → 400 mit `lease_id: invalid_value`); `confirmed_by_tenant` (Vorgabe `false`) legt den Status `confirmed` statt `planned` fest. Für Vertrag und Art darf es **keinen aktiven Termin** geben (die Verwaltung würde umplanen, die API nie): sonst 409 `appointment_conflict`. Wie dort rückt der Vertragsstatus von „Zahlung eingegangen“ auf „Einzugsprotokoll ausstehend“ bzw. von „Kündigung eingegangen“ auf „Auszugsprotokoll ausstehend“. **Datum:** nicht in der Vergangenheit (heute nur mit einer Uhrzeit, die noch nicht vorbei ist; heute ohne Uhrzeit gilt ab Tagesbeginn und wird abgelehnt), höchstens 3 Jahre voraus (Europe/Berlin), sonst 400 mit `date: invalid_value`; eine Wiederholung mit demselben Schlüssel bleibt davon unberührt. **Es werden keine E-Mails und keine Benachrichtigungen versendet** — weder an den Hausmeister noch an den Mieter (die Verwaltung versendet beim Setzen eines Übergabetermins beides). Pflicht-Kopf `Idempotency-Key`: gleicher Schlüssel mit gleichem Inhalt liefert denselben Termin (200), mit anderem Inhalt 409 `idempotency_conflict`. Die Wiederholungserkennung hängt am angelegten Termin: Wird er in der Verwaltung gelöscht, bevor die Wiederholung eintrifft, legt dieselbe Anfrage einen neuen Termin an (wie beim Mieterimport). Felder, die nicht zur Art passen, sind `unknown_field`. Der Scope `appointments:write` braucht zusätzlich `appointments:read`; Übergabetermine verlangen vom Ersteller des Tokens das Recht Vermietungsprozess (Bearbeiten), allgemeine Termine das Recht Kalender (Bearbeiten). Body höchstens 16 KB.\n\nScope: `appointments:write` (Ersteller braucht: calendar (Bearbeiten)).","tags":["Termine"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"type":"move_in","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","date":"2026-10-15","time":"10:30","description":"Schlüsselübergabe am Tor"},"schema":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["move_in","move_out"]},"lease_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"date":{"type":"string","format":"date"},"time":{"type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"description":{"type":["string","null"],"maxLength":500},"confirmed_by_tenant":{"type":"boolean"}},"required":["type","lease_id","date","time"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","enum":["general"]},"title":{"type":"string","minLength":1,"maxLength":100},"date":{"type":"string","format":"date"},"time":{"type":["string","null"],"pattern":"^([01]\\d|2[0-3]):[0-5]\\d$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"description":{"type":["string","null"],"maxLength":500},"duration_minutes":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":1440}},"required":["type","title","date"],"additionalProperties":false}]}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3b9d1e6a-7c24-4f58-a1b3-8e2f6c4d9a07","type":"move_in","status":"planned","date":"2026-10-15","time":"10:30","starts_at":"2026-10-15T08:30:00+00:00","duration_minutes":null,"title":null,"description":"Schlüsselübergabe am Tor","location_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","unit_id":"8a1c4e7b-3d52-4b96-8f0a-2c5e9d1b7a34","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","confirmed_by_tenant":false,"created_at":"2026-10-10T09:12:44.318204+00:00","updated_at":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string","enum":["move_in","move_out","general"]},"status":{"type":["string","null"],"enum":["planned","confirmed","rescheduled","completed","cancelled",null]},"date":{"type":"string"},"time":{"type":["string","null"]},"starts_at":{"type":"string"},"duration_minutes":{"type":["integer","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"confirmed_by_tenant":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"required":["id","type","status","date","time","starts_at","duration_minutes","title","description","location_id","unit_id","lease_id","tenant_id","confirmed_by_tenant","created_at","updated_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3b9d1e6a-7c24-4f58-a1b3-8e2f6c4d9a07","type":"move_in","status":"planned","date":"2026-10-15","time":"10:30","starts_at":"2026-10-15T08:30:00+00:00","duration_minutes":null,"title":null,"description":"Schlüsselübergabe am Tor","location_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","unit_id":"8a1c4e7b-3d52-4b96-8f0a-2c5e9d1b7a34","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","confirmed_by_tenant":false,"created_at":"2026-10-10T09:12:44.318204+00:00","updated_at":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string","enum":["move_in","move_out","general"]},"status":{"type":["string","null"],"enum":["planned","confirmed","rescheduled","completed","cancelled",null]},"date":{"type":"string"},"time":{"type":["string","null"]},"starts_at":{"type":"string"},"duration_minutes":{"type":["integer","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"confirmed_by_tenant":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"required":["id","type","status","date","time","starts_at","duration_minutes","title","description","location_id","unit_id","lease_id","tenant_id","confirmed_by_tenant","created_at","updated_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet (idempotency_conflict) oder für Vertrag und Art gibt es schon einen aktiven Termin (appointment_conflict)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (höchstens 16 KB)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"422":{"description":"Wird von diesem Endpunkt nicht verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/appointments/{id}":{"get":{"summary":"Ein Termin","description":"Wie ein Eintrag aus `/v1/appointments`. Unbekannte oder fremde Id sowie jeder Termin, den `/v1/appointments` nie ausgibt (Übergabetermin ohne Datum): 404 `not_found`.\n\nScope: `appointments:read` (Ersteller braucht: calendar (Lesen)).","tags":["Termine"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Termins (aus GET /v1/appointments)"},"required":true,"description":"Id des Termins (aus GET /v1/appointments)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3b9d1e6a-7c24-4f58-a1b3-8e2f6c4d9a07","type":"move_in","status":"planned","date":"2026-10-15","time":"10:30","starts_at":"2026-10-15T08:30:00+00:00","duration_minutes":null,"title":null,"description":"Schlüsselübergabe am Tor","location_id":"5e0b7a3c-2f1d-4c6b-9a8e-7d6c5b4a3f21","unit_id":"8a1c4e7b-3d52-4b96-8f0a-2c5e9d1b7a34","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","confirmed_by_tenant":false,"created_at":"2026-10-10T09:12:44.318204+00:00","updated_at":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string","enum":["move_in","move_out","general"]},"status":{"type":["string","null"],"enum":["planned","confirmed","rescheduled","completed","cancelled",null]},"date":{"type":"string"},"time":{"type":["string","null"]},"starts_at":{"type":"string"},"duration_minutes":{"type":["integer","null"]},"title":{"type":["string","null"]},"description":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"confirmed_by_tenant":{"type":["boolean","null"]},"created_at":{"type":"string"},"updated_at":{"type":["string","null"]}},"required":["id","type","status","date","time","starts_at","duration_minutes","title","description","location_id","unit_id","lease_id","tenant_id","confirmed_by_tenant","created_at","updated_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages":{"get":{"summary":"Schäden (Fallakten)","description":"Die Schadensakten Ihrer Organisation, neueste zuerst. Ein Schaden ist eine **Fallakte** der Verwaltung: an einer Einheit (`kind = unit`) oder am Gelände/Park eines Standorts (`kind = location`, mit `process_type`). Meldungen von Mietern oder Hausmeistern, die noch auf die Entscheidung der Verwaltung warten, erscheinen erst nach der Annahme; Übergabeprotokoll-Schäden ohne Fallakte gehören nicht dazu. **Zeitfilter** auf den Meldezeitpunkt (`reported_at`): genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder -Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); **ohne Angabe gelten die letzten 30 Tage** (alles nur mit `period=all`, mit `next_cursor` seitenweise); mehrere Formen → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. Tagesgrenzen in Europe/Berlin. Filter: `location_id` (Gelände-Schäden und Schäden an Einheiten des Standorts), `unit_id`, `lease_id` und `tenant_id` (Vertrag bzw. Mieter der Mieter-Meldung; nie der Verursacher), `status` (`WEITERE_KLAERUNG`, `PLANEN_BEAUFTRAGEN`, `BEAUFTRAGT`, `ABGESCHLOSSEN`, `KEINE_REPARATUR`), `kind` (`unit`, `location`), `reporter_type` (`tenant`, `caretaker`, `administration`) und `updated_since` (ISO-Zeitpunkt mit Zeitzone, z. B. `2026-10-01T10:00:00Z`; Akte angelegt oder geändert seit dann, auch durch ein neues oder geändertes Dokument — das Löschen eines Dokuments zählt nicht; **kein lückenloser Änderungsstrom** — für einen lückenlosen Abgleich nutzen Sie `GET /v1/damages/changes`). Auf Wunsch als CSV oder Excel (`format=csv|xlsx`). **Datenschutz:** nur die Art des Melders und des Verursachers, nie Namen oder Kontaktdaten; keine Versicherungs-, Kosten- und Artikeldaten. **`description` ist Freitext und unsicher** (kann beliebige Zeichen und Angaben Dritter enthalten) — nie als HTML ausgeben. Das Token sieht die ganze Organisation (keine Standortgrenzen).\n\nScope: `damages:read` (Ersteller braucht: storage_units (Lesen), leasing_process (Lesen)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"unit_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["unit","location"]},"required":false,"name":"kind","in":"query"},{"schema":{"type":"string","enum":["tenant","caretaker","administration"]},"required":false,"name":"reporter_type","in":"query"},{"schema":{"type":"string"},"required":false,"name":"updated_since","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"WEITERE_KLAERUNG","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":null,"reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":0}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Schaden an einer Einheit anlegen","description":"Legt eine Fallakte an einer Einheit an (`unit_id`, `damage_type`: `paint`, `dent`, `oil_stain`, `hole`, `scratch`, `dirt`, `other`; `damage_date` nicht vor 2000-01-01 und höchstens bis morgen; `description` 1–5000 Zeichen; optional `priority`). Es entsteht dieselbe Akte wie bei „Neuen Schaden erfassen“ in der Verwaltung: Status **`WEITERE_KLAERUNG`** (offen), Melder `administration`, die Vorgangsnummer vergibt die Verwaltung. Die API legt **nie** Meldungen von Mietern oder Hausmeistern an und umgeht keinen Genehmigungsweg; Gelände-/Parkschäden, Fotos, Beträge, Artikel, Rechnungen und Verursacher lassen sich nicht über die API erfassen. Eine unbekannte oder fremde `unit_id` → 404. Schreibender Aufruf (eigenes, engeres Kontingent). **`Idempotency-Key` ist Pflicht** (1–255 sichtbare ASCII-Zeichen, z. B. eine UUID je Vorgang, 90 Tage gültig je Token): gleicher Schlüssel mit gleichem Inhalt → derselbe Erfolg ohne erneute Wirkung (200), gleicher Schlüssel mit anderem Inhalt → 409 `idempotency_conflict`. Antwort 201 mit dem angelegten Schaden (Wiederholung: 200).\n\nScope: `damages:write` (Ersteller braucht: storage_units (Bearbeiten), leasing_process (Bearbeiten)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","damage_type":"dent","damage_date":"2026-10-02","description":"Delle im Rolltor, links unten.","priority":"normal"},"schema":{"type":"object","properties":{"unit_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"damage_type":{"type":"string","enum":["paint","dent","oil_stain","hole","scratch","dirt","other"]},"damage_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":{"type":"string","minLength":1,"maxLength":5000},"priority":{"type":"string","enum":["low","normal","high","urgent"]}},"required":["unit_id","damage_type","damage_date","description"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"WEITERE_KLAERUNG","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":null,"reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":0,"documents":[]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"WEITERE_KLAERUNG","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":null,"reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":0,"documents":[]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body größer als 64 KB.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages/{id}":{"get":{"summary":"Ein Schaden","description":"Wie ein Eintrag aus `/v1/damages`, zusätzlich `documents`: Verweise auf die Dokumente der Schadenakte (Fotos, Belege) — nur `id`, `file_type`, `mime_type`, `file_size` und `created_at`, höchstens 200, **nie Dateiname, Speicherpfad oder Datei-Adresse**; die Dateien selbst sind über die API nicht abrufbar (`/v1/documents` umfasst Mieter- und Standortdokumente, nicht die Dokumente der Schadenakte). Unbekannte oder fremde Id sowie Übergabeprotokoll-Schäden ohne Fallakte: 404.\n\nScope: `damages:read` (Ersteller braucht: storage_units (Lesen), leasing_process (Lesen)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Schadens (aus GET /v1/damages)"},"required":true,"description":"Id des Schadens (aus GET /v1/damages)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"WEITERE_KLAERUNG","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":"2026-10-03T07:45:02.118+00:00","reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":1,"documents":[{"id":"c4a8e1f2-6b30-4d79-9e15-2a7f0b3d8c64","file_type":"foto","mime_type":"image/jpeg","file_size":284113,"created_at":"2026-10-03T07:45:02.118+00:00"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/damages/{id}/status":{"patch":{"summary":"Status eines Schadens setzen","description":"Setzt den Reparatur-Status einer Fallakte auf einen der vier Werte der Stufe 12 der Verwaltung: `WEITERE_KLAERUNG`, `PLANEN_BEAUFTRAGEN`, `BEAUFTRAGT`, `ABGESCHLOSSEN` (auch zurück, z. B. Wiedereröffnen). **`KEINE_REPARATUR` ist weder Ziel noch Ausgangspunkt** (400 `validation_error`): der Wert hängt an der Abrechnungsentscheidung der Verwaltung. Entspricht der Wunsch dem aktuellen Status, ändert sich nichts (200). Genehmigungs- und Abrechnungswege werden nicht berührt. **Hinweis:** Die E-Mail „Schaden repariert“ an den meldenden Hausmeister, die die Verwaltung beim Abschluss versendet, löst die API nicht aus. Unbekannte oder fremde Id sowie Übergabeprotokoll-Schäden ohne Fallakte: 404. Schreibender Aufruf (eigenes, engeres Kontingent). **`Idempotency-Key` ist Pflicht** (1–255 sichtbare ASCII-Zeichen, z. B. eine UUID je Vorgang, 90 Tage gültig je Token): gleicher Schlüssel mit gleichem Inhalt → derselbe Erfolg ohne erneute Wirkung (200), gleicher Schlüssel mit anderem Inhalt → 409 `idempotency_conflict`.\n\nScope: `damages:write` (Ersteller braucht: storage_units (Bearbeiten), leasing_process (Bearbeiten)).","tags":["Schäden"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Schadens (aus GET /v1/damages)"},"required":true,"description":"Id des Schadens (aus GET /v1/damages)","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"status":"PLANEN_BEAUFTRAGEN"},"schema":{"type":"object","properties":{"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN"]}},"required":["status"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"2f6c1b84-3a9d-4e57-8c10-b7d5e0a9c312","case_number":"VDF-12-003","kind":"unit","status":"PLANEN_BEAUFTRAGEN","process_type":null,"damage_type":"dent","priority":"normal","description":"Delle im Rolltor, links unten.","damage_date":"2026-10-02","reported_at":"2026-10-03T07:41:12.482915+00:00","updated_at":"2026-10-03T09:12:44.51+00:00","reporter_type":"administration","causer_type":null,"unit_id":"5b1e7a30-9c42-4d6f-a8e1-0c3f2d4b6a79","unit_number":"12","location_id":"8e2d4c61-7b05-4a93-9f1c-6d3e5a7b9c20","lease_id":null,"tenant_id":null,"document_count":1,"documents":[{"id":"c4a8e1f2-6b30-4d79-9e15-2a7f0b3d8c64","file_type":"foto","mime_type":"image/jpeg","file_size":284113,"created_at":"2026-10-03T07:45:02.118+00:00"}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"case_number":{"type":"string"},"kind":{"type":"string","enum":["unit","location"]},"status":{"type":"string","enum":["WEITERE_KLAERUNG","PLANEN_BEAUFTRAGEN","BEAUFTRAGT","ABGESCHLOSSEN","KEINE_REPARATUR"]},"process_type":{"type":["string","null"],"enum":["MISCELLANEOUS","VEHICLES","WASTE","CLEARANCE","DAMAGE",null]},"damage_type":{"type":["string","null"]},"priority":{"type":["string","null"],"enum":["low","normal","high","urgent",null]},"description":{"type":["string","null"]},"damage_date":{"type":["string","null"]},"reported_at":{"type":"string"},"updated_at":{"type":["string","null"]},"reporter_type":{"type":"string","enum":["tenant","caretaker","administration"]},"causer_type":{"type":["string","null"],"enum":["AKTIVER_MIETER","ANDERER_MIETER","EXTERNE_PERSON","UNBEKANNT",null]},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"unit_number":{"type":["string","null"]},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"document_count":{"type":"integer"},"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"file_type":{"type":["string","null"]},"mime_type":{"type":["string","null"]},"file_size":{"type":["integer","null"]},"created_at":{"type":"string"}},"required":["id","file_type","mime_type","file_size","created_at"]}}},"required":["id","case_number","kind","status","process_type","damage_type","priority","description","damage_date","reported_at","updated_at","reporter_type","causer_type","unit_id","unit_number","location_id","lease_id","tenant_id","document_count"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body größer als 64 KB.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/utility/statements":{"get":{"summary":"Strom- und Wasserabrechnungen","description":"Die Strom- und Wasserabrechnungen Ihrer Organisation je Mieter und Vertrag: Abrechnungszeitraum, Zählerstände, Verbrauch und die **gespeicherten** Beträge (Arbeitspreis, Zählergebühr, Abwasser, Kosten netto/brutto, Umsatzsteuer, Vorauszahlungen, Saldo). Die API rechnet nichts neu und addiert keine Beträge; Kosten und Saldo stehen so, wie die Verwaltung sie festgeschrieben hat. Entwürfe erscheinen nie. `status` gilt **je Position**: `finalized` (festgeschrieben, noch nicht versendet), `sent` (diese Position wurde per E-Mail versendet) oder `cancelled` (storniert, auch eine einzelne stornierte Position). **Reihenfolge: nach Änderungszeitpunkt aufsteigend** (`updated_at`, dann `id`; zuletzt Geänderte am Ende) — so geht beim Blättern keine Zeile verloren, die sich währenddessen ändert; wer nur Neues sucht, nutzt `updated_since`. Zeitfilter wie bei allen Listen: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder -Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. Der Zeitfilter bezieht sich auf den Erstellungszeitpunkt der Abrechnung; ohne Zeitangabe die letzten 30 Tage — **mit `year`, `lease_id` oder `updated_since` ohne Zeitangabe `all`** (so verpasst ein Änderungsabgleich keine Abrechnung, die erst heute storniert oder versendet wurde). `year` ist das Jahr, in dem der Abrechnungszeitraum endet. `location_id` ist der Standort des Laufs, bei Läufen für alle Standorte der Standort der Vertragseinheit (auch im Filter). Weitere Filter: `status`, `tenant_id`, `lease_id`, `location_id` (eine fremde oder unbekannte Id → 404 `not_found`) und `updated_since` (ISO-Datum oder -Zeitpunkt: Abrechnungen, die seitdem erstellt oder geändert wurden). Mit `next_cursor` weiterblättern; auf Wunsch als CSV oder Excel.\n\nScope: `utility:read` (Ersteller braucht: meter_readings (Lesen), accounting_electricity (Lesen), accounting_water (Lesen)).","tags":["Nebenkosten und Zähler"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"integer","minimum":1990,"maximum":2100},"required":false,"name":"year","in":"query"},{"schema":{"type":"string","enum":["finalized","sent","cancelled"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"tenant_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"lease_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"updated_since","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"3f1e2d4c-5b6a-4789-9abc-0d1e2f3a4b5c","settlement_id":"8a7b6c5d-4e3f-4a2b-9c1d-0e9f8a7b6c5d","status":"sent","resource_type":"electricity","is_moveout_settlement":false,"location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","tenant_id":"9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","meter_id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","period_from":"2025-01-01","period_to":"2025-12-31","reading_start":1204.5,"reading_end":1873.2,"consumption":668.7,"work_amount_net":200.61,"meter_fee_net":12,"wastewater_amount_net":null,"costs_net":212.61,"vat_amount":40.4,"costs_gross":253.01,"advance_payments_total":240,"balance_net":10.91,"balance_gross":13.01,"invoice_number":"NK-2025-00042","sent_at":"2026-03-14T09:12:00.000Z","cancelled_at":null,"created_at":"2026-03-10T14:03:21.000Z","updated_at":"2026-03-14T09:12:00.000Z"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"settlement_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"status":{"type":"string","enum":["finalized","sent","cancelled"]},"resource_type":{"type":"string","enum":["electricity","water"]},"is_moveout_settlement":{"type":"boolean"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"tenant_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"period_from":{"type":"string"},"period_to":{"type":"string"},"reading_start":{"type":["number","null"]},"reading_end":{"type":["number","null"]},"consumption":{"type":["number","null"]},"work_amount_net":{"type":["number","null"]},"meter_fee_net":{"type":["number","null"]},"wastewater_amount_net":{"type":["number","null"]},"costs_net":{"type":["number","null"]},"vat_amount":{"type":["number","null"]},"costs_gross":{"type":["number","null"]},"advance_payments_total":{"type":["number","null"]},"balance_net":{"type":["number","null"]},"balance_gross":{"type":["number","null"]},"invoice_number":{"type":["string","null"]},"sent_at":{"type":["string","null"]},"cancelled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","settlement_id","status","resource_type","is_moveout_settlement","location_id","tenant_id","lease_id","meter_id","period_from","period_to","reading_start","reading_end","consumption","work_amount_net","meter_fee_net","wastewater_amount_net","costs_net","vat_amount","costs_gross","advance_payments_total","balance_net","balance_gross","invoice_number","sent_at","cancelled_at","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/meters":{"get":{"summary":"Zähler","description":"Die Strom- und Wasserzähler Ihrer Organisation: Zählernummer (`meter_number`), Art (`type`: `electricity`, `water`), Spannung (nur Strom: 230 oder 400), Status (`active`), Einheit (`unit_id`) und Standort (`location_id`). `is_main_meter: true` ist der Hauptzähler (Hausanschluss) eines Standorts, `false` ein Unterzähler einer Einheit. Reihenfolge: nach Änderungszeitpunkt aufsteigend (`updated_at`, dann `id`). Filter: `location_id`, `unit_id` (eine fremde oder unbekannte Id → 404 `not_found`), `type`, `active` und `updated_since` (ISO-Datum oder -Zeitpunkt). Kein Zeitfilter. Mit `next_cursor` weiterblättern; auf Wunsch als CSV oder Excel. Die Stände eines Zählers liefert `GET /v1/meters/{id}/readings`.\n\nScope: `utility:read` (Ersteller braucht: meter_readings (Lesen), accounting_electricity (Lesen), accounting_water (Lesen)).","tags":["Nebenkosten und Zähler"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"location_id","in":"query"},{"schema":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"required":false,"name":"unit_id","in":"query"},{"schema":{"type":"string","enum":["electricity","water"]},"required":false,"name":"type","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"active","in":"query"},{"schema":{"type":"string"},"required":false,"name":"updated_since","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","meter_number":"EHZ-4711-0815","type":"electricity","voltage":230,"active":true,"is_main_meter":false,"unit_id":"2e3f4a5b-6c7d-4e8f-9a0b-1c2d3e4f5a6b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","installed_at":"2023-05-02T00:00:00.000Z","created_at":"2023-05-02T08:00:00.000Z","updated_at":"2023-05-02T08:00:00.000Z"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_number":{"type":"string"},"type":{"type":"string","enum":["electricity","water"]},"voltage":{"type":["integer","null"]},"active":{"type":"boolean"},"is_main_meter":{"type":"boolean"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"installed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","meter_number","type","voltage","active","is_main_meter","unit_id","location_id","installed_at","created_at","updated_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Zähler anlegen","description":"Legt an einer **Einheit** einen Zähler zusammen mit seiner **Erstablesung** an (`protocol_type` `new_installation`, Quelle `api`). Gedacht für die einmalige Übernahme von Zählernummern aus einem Altsystem. Der Token braucht zusätzlich `utility:read`. Body: `unit_id` (Id der Einheit, aus `GET /v1/units`), `type` (`electricity` oder `water`), `voltage` (bei Strom Pflicht: `230` oder `400`; bei Wasser nicht erlaubt), `meter_number` (Zählernummer, 1–100 Zeichen), `reading_date` (Tag `YYYY-MM-DD`, höchstens ein Tag in der Zukunft; zugleich das Einbaudatum) und `meter_value` (Zahl ≥ 0, Stand der Erstablesung). Die **Erstablesung ist Pflicht**. Hauptzähler eines Standorts sowie Zählwerke (OBIS) legt die API nicht an. **Voraussetzung:** Die Einheit muss in der Verwaltung für die Art eingerichtet sein (Strom 230 V, Strom 400 V bzw. Wasser); sonst 422 `unit_not_configured` — die API ändert keine Stammdaten der Einheit. Hängt an der Einheit für diese Art schon ein aktiver Zähler, kommt 409 `meter_exists` (vorhandene Zähler: `GET /v1/meters?unit_id=…`). **`Idempotency-Key` ist Pflicht** (1–255 Zeichen): gleicher Schlüssel mit gleichem Inhalt liefert denselben Zähler (200), mit anderem Inhalt 409 `idempotency_conflict`. Die Zählernummer muss nicht eindeutig sein; Dubletten prüft der Aufrufer vorab. Unbekannte oder fremde Einheit: 404 `not_found`. Antwort: der Zähler wie in `GET /v1/meters` plus `reading_id`. Schreibende Aufrufe haben ein engeres Kontingent. Zusätzlich braucht der Ersteller des Tokens in der Verwaltung die Rechte zum Bearbeiten von Zählerständen, Strom- und Wasserabrechnung.\n\nScope: `utility:write` (Ersteller braucht: meter_readings (Bearbeiten), accounting_electricity (Bearbeiten), accounting_water (Bearbeiten)).","tags":["Nebenkosten und Zähler"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"unit_id":"2e3f4a5b-6c7d-4e8f-9a0b-1c2d3e4f5a6b","type":"electricity","voltage":230,"meter_number":"EHZ-4711-0815","reading_date":"2026-10-01","meter_value":1873.2},"schema":{"type":"object","properties":{"unit_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"type":{"type":"string","enum":["electricity","water"]},"voltage":{"anyOf":[{"type":"number","enum":[230]},{"type":"number","enum":[400]},{"type":"null"}]},"meter_number":{"type":"string","minLength":1,"maxLength":100},"reading_date":{"type":"string"},"meter_value":{"type":"number","minimum":0,"maximum":999999999}},"required":["unit_id","type","meter_number","reading_date","meter_value"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","meter_number":"EHZ-4711-0815","type":"electricity","voltage":230,"active":true,"is_main_meter":false,"unit_id":"2e3f4a5b-6c7d-4e8f-9a0b-1c2d3e4f5a6b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","installed_at":"2023-05-02T00:00:00.000Z","created_at":"2023-05-02T08:00:00.000Z","updated_at":"2023-05-02T08:00:00.000Z","reading_id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_number":{"type":"string"},"type":{"type":"string","enum":["electricity","water"]},"voltage":{"type":["integer","null"]},"active":{"type":"boolean"},"is_main_meter":{"type":"boolean"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"installed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"reading_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","meter_number","type","voltage","active","is_main_meter","unit_id","location_id","installed_at","created_at","updated_at","reading_id"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","meter_number":"EHZ-4711-0815","type":"electricity","voltage":230,"active":true,"is_main_meter":false,"unit_id":"2e3f4a5b-6c7d-4e8f-9a0b-1c2d3e4f5a6b","location_id":"6a1f0c2e-4d7b-4b8e-9f10-2c3d4e5f6a7b","installed_at":"2023-05-02T00:00:00.000Z","created_at":"2023-05-02T08:00:00.000Z","updated_at":"2023-05-02T08:00:00.000Z","reading_id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_number":{"type":"string"},"type":{"type":"string","enum":["electricity","water"]},"voltage":{"type":["integer","null"]},"active":{"type":"boolean"},"is_main_meter":{"type":"boolean"},"unit_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"location_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"installed_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"reading_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"}},"required":["id","meter_number","type","voltage","active","is_main_meter","unit_id","location_id","installed_at","created_at","updated_at","reading_id"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet (idempotency_conflict), an der Einheit hängt für diese Art schon ein aktiver Zähler (meter_exists) oder die Zählerstände der Organisation werden gerade bearbeitet (readings_locked: nichts gespeichert, mit demselben Idempotency-Key erneut senden)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"422":{"description":"Die Einheit ist für diese Art nicht eingerichtet (unit_not_configured)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/meters/{id}/readings":{"get":{"summary":"Zählerstände eines Zählers","description":"Die Zählerstände eines Zählers: Ablesedatum (`reading_date`), Wert (`meter_value`), Zählwerk (`obis_code`, nur am Hauptstromzähler), Art der Ablesung (`protocol_type`, z. B. `interim_reading`, `per_move_in_protocol`), Quelle (`source`: `api` = über die API eingetragen, `app` = Verwaltung, Hausmeister oder Protokoll), Vertrag (`lease_id`) und `is_billed` (bereits abgerechnet). Neueste zuerst. Zeitfilter wie bei allen Listen: genau eine der Formen `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` (ein Tag) oder `from`/`to` (ISO-Datum oder -Zeitpunkt; ein Datum bei `to` nennt den letzten Tag einschließlich, ein Zeitpunkt die ausgeschlossene Obergrenze); mehrere Formen → 400 `period_conflict`, `from` nach `to` → 400 `range_invalid`. Der Zeitfilter bezieht sich auf das **Ablesedatum**; ohne Angabe die letzten 30 Tage. Stornierte Ablesungen erscheinen nur mit `include_cancelled=true`. Fotos und Ableser werden nicht ausgegeben. Unbekannter oder fremder Zähler: 404 `not_found`. Mit `next_cursor` weiterblättern; auf Wunsch als CSV oder Excel.\n\nScope: `utility:read` (Ersteller braucht: meter_readings (Lesen), accounting_electricity (Lesen), accounting_water (Lesen)).","tags":["Nebenkosten und Zähler"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Zählers (aus GET /v1/meters)"},"required":true,"description":"Id des Zählers (aus GET /v1/meters)","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"include_cancelled","in":"query"},{"schema":{"type":"string","enum":["json","csv","xlsx"],"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)"},"required":false,"description":"Ausgabeformat / output format: json (Standard/default), csv (UTF-8 mit BOM), xlsx (Excel)","name":"format","in":"query"},{"schema":{"type":"string","enum":[";",",","semicolon","comma"],"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,"},"required":false,"description":"Nur csv / csv only: Trennzeichen / separator, ; (Standard/default) oder/or ,","name":"delimiter","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","meter_id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","reading_date":"2026-10-01T00:00:00.000Z","meter_value":1873.2,"obis_code":null,"protocol_type":"interim_reading","source":"api","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","is_cancelled":false,"is_billed":false,"created_at":"2026-10-02T07:45:10.000Z"}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"reading_date":{"type":"string"},"meter_value":{"type":"number"},"obis_code":{"type":["string","null"],"enum":["1.8.0","1.8.1","1.8.2","2.8.0","2.8.1","2.8.2",null]},"protocol_type":{"type":"string","enum":["interim_reading","per_move_in_protocol","per_move_out_protocol","per_activation_agreement_normalstrom","per_deactivation_agreement_normalstrom","per_activation_agreement_starkstrom","per_deactivation_agreement_starkstrom","per_activation_agreement_water","per_deactivation_agreement_water","new_installation"]},"source":{"type":"string","enum":["app","api"]},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"is_cancelled":{"type":"boolean"},"is_billed":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","meter_id","reading_date","meter_value","obis_code","protocol_type","source","lease_id","is_cancelled","is_billed","created_at"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}},"text/csv":{"schema":{"type":"string","description":"CSV, UTF-8 + BOM; ?format=csv"}},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{"schema":{"type":"string","description":"Excel (.xlsx); ?format=xlsx"}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). `unsupported_format`: `error.details.supported_formats` nennt die erlaubten Formate; bei einer Excel-Zelle über 32.767 Zeichen zusätzlich `reason`, `field` und `max_cell_chars`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Zählerstand eintragen","description":"Trägt einen Zählerstand als **Zwischenablesung** (`interim_reading`) ein, Quelle `api`. Ein-/Auszugsprotokolle und Korrekturen bleiben der Verwaltung vorbehalten. Der Token braucht zusätzlich `utility:read`. Body: `reading_date` (Tag `YYYY-MM-DD`, höchstens ein Tag in der Zukunft), `meter_value` (Zahl ≥ 0), `obis_code` (Pflicht am Hauptstromzähler, z. B. `1.8.0` Netzbezug; sonst nicht erlaubt) und optional `force_warnings`. Der Vertrag wird wie in der Verwaltung aus dem Ablesedatum bestimmt. **Plausibilitätsprüfung der Verwaltung:** Fehler (z. B. Stand kleiner als der Vorwert, `chronological_order`; Datum in einem bereits abgerechneten Zeitraum, `in_billed_period`) ergeben 400 `validation_error` mit den Codes in `error.details.plausibility`; Warnungen (`unrealistic_consumption`, …) ergeben 400 mit `error.details.plausibility_warnings` und werden nur mit `force_warnings: true` übernommen. **`Idempotency-Key` ist Pflicht** (1–255 Zeichen): gleicher Schlüssel mit gleichem Inhalt liefert dieselbe Ablesung (200), mit anderem Inhalt 409 `idempotency_conflict`. Unbekannter oder fremder Zähler: 404 `not_found`; ein deaktivierter Zähler nimmt keine neuen Stände an (400 `validation_error`). **Grenze der Idempotenz:** Sie gilt, solange die Ablesung existiert — wird sie in der Verwaltung gelöscht, legt ein erneutes Senden mit demselben `Idempotency-Key` sie neu an. Wird derselbe Zähler gleichzeitig geändert (z. B. in der Verwaltung), prüft die API erneut; gelingt das dreimal nicht, kommt 503 `service_unavailable` — dann mit demselben `Idempotency-Key` erneut senden. Schreibende Aufrufe haben ein engeres Kontingent. Zusätzlich braucht der Ersteller des Tokens in der Verwaltung die Rechte zum Bearbeiten von Zählerständen, Strom- und Wasserabrechnung.\n\nScope: `utility:write` (Ersteller braucht: meter_readings (Bearbeiten), accounting_electricity (Bearbeiten), accounting_water (Bearbeiten)).","tags":["Nebenkosten und Zähler"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Zählers (aus GET /v1/meters)"},"required":true,"description":"Id des Zählers (aus GET /v1/meters)","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"reading_date":"2026-10-01","meter_value":1873.2},"schema":{"type":"object","properties":{"reading_date":{"type":"string"},"meter_value":{"type":"number","minimum":0,"maximum":999999999},"obis_code":{"type":["string","null"],"enum":["1.8.0","1.8.1","1.8.2","2.8.0","2.8.1","2.8.2",null]},"force_warnings":{"type":"boolean"}},"required":["reading_date","meter_value"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key: dasselbe Ergebnis wie beim ersten Aufruf","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","meter_id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","reading_date":"2026-10-01T00:00:00.000Z","meter_value":1873.2,"obis_code":null,"protocol_type":"interim_reading","source":"api","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","is_cancelled":false,"is_billed":false,"created_at":"2026-10-02T07:45:10.000Z"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"reading_date":{"type":"string"},"meter_value":{"type":"number"},"obis_code":{"type":["string","null"],"enum":["1.8.0","1.8.1","1.8.2","2.8.0","2.8.1","2.8.2",null]},"protocol_type":{"type":"string","enum":["interim_reading","per_move_in_protocol","per_move_out_protocol","per_activation_agreement_normalstrom","per_deactivation_agreement_normalstrom","per_activation_agreement_starkstrom","per_deactivation_agreement_starkstrom","per_activation_agreement_water","per_deactivation_agreement_water","new_installation"]},"source":{"type":"string","enum":["app","api"]},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"is_cancelled":{"type":"boolean"},"is_billed":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","meter_id","reading_date","meter_value","obis_code","protocol_type","source","lease_id","is_cancelled","is_billed","created_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d","meter_id":"5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a","reading_date":"2026-10-01T00:00:00.000Z","meter_value":1873.2,"obis_code":null,"protocol_type":"interim_reading","source":"api","lease_id":"0b6c2c1a-8e5f-4c2d-9a1b-3c4d5e6f7a8b","is_cancelled":false,"is_billed":false,"created_at":"2026-10-02T07:45:10.000Z"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"meter_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"reading_date":{"type":"string"},"meter_value":{"type":"number"},"obis_code":{"type":["string","null"],"enum":["1.8.0","1.8.1","1.8.2","2.8.0","2.8.1","2.8.2",null]},"protocol_type":{"type":"string","enum":["interim_reading","per_move_in_protocol","per_move_out_protocol","per_activation_agreement_normalstrom","per_deactivation_agreement_normalstrom","per_activation_agreement_starkstrom","per_deactivation_agreement_starkstrom","per_activation_agreement_water","per_deactivation_agreement_water","new_installation"]},"source":{"type":"string","enum":["app","api"]},"lease_id":{"type":["string","null"],"pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"is_cancelled":{"type":"boolean"},"is_billed":{"type":"boolean"},"created_at":{"type":"string"}},"required":["id","meter_id","reading_date","meter_value","obis_code","protocol_type","source","lease_id","is_cancelled","is_billed","created_at"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet (idempotency_conflict) oder die Zählerstände der Organisation werden gerade bearbeitet (readings_locked: nichts gespeichert, mit demselben Idempotency-Key erneut senden)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks":{"get":{"summary":"Webhooks auflisten","description":"Alle Webhook-Endpunkte Ihrer Organisation (höchstens 10), älteste zuerst. **Keine Seitenwechsel:** `data` enthält nur `items`, kein `next_cursor` (anders als die übrigen Listen). Ein Webhook meldet Ereignisse per signiertem POST an eine https-Adresse Ihres Systems. **Nie** das Signaturgeheimnis: Es erscheint nur einmal bei der Anlage und bei der Rotation. `active = false` mit `disabled_reason` zeigt einen abgeschalteten Webhook (`manual`, `delivery_failed`, `token_revoked`, `token_expired`, `creator_lost_access`, `api_disabled`). Zähler: `pending_deliveries` (wartende Zustellungen, Rückstau), `paused_deliveries` (pausierte Zustellungen; bei einem aktiven Webhook heißt ein Wert über 0: die Wiederaufnahme läuft noch), `enqueue_failures` (nicht eingestellte Ereignisse, die noch nachgestellt werden oder verloren sind) und `recording_gap` (`null` oder `{ from, to }`: ab wann während der Abschaltung Ereignisse nicht mehr aufgezeichnet werden konnten; `to` ist `null`, solange die Lücke offen ist — der Änderungsabgleich mit `updated_since = from` schließt sie). Abonnierbare Ereignisse:`payment.received`, `dunning.sent`, `contract.signed`, `invoice.created`, `document.created`, `email.sent`, `damage.created` (neue Fallakte, auch über die API angelegt) sowie `contract.terminated` (Kündigung bestätigt), `invoice.cancelled` (Rechnung storniert) und `damage.updated` (Fallakte geändert). Neue Typen gelten nur für Webhooks, die sie ausdrücklich in `events` aufführen. Der Scope verlangt vom Token-Ersteller Vollzugriff auf die API-Zugänge; endet das Token oder verliert der Ersteller das Recht, werden seine Webhooks abgeschaltet.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received","invoice.created"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T08:15:30.412907+00:00","secret_rotated_at":null,"previous_secret_valid_until":null,"last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null}]},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap"]}}},"required":["items"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"post":{"summary":"Webhook anlegen","description":"Legt einen Webhook an: `url` (nur **https auf Port 443** — ein anderer Port wird abgelehnt —, nur öffentlich erreichbare Adressen, keine Zugangsdaten in der Adresse, keine Weiterleitungen), `events` (mindestens eines) und optional `description`. Die Adresse wird geprüft (Form und DNS) — sonst 400 `webhook_url_invalid`; mehr als 10 Webhooks je Organisation: 409 `webhook_limit_reached`. Die Antwort 201 (Neuanlage) enthält **einmalig** das Signaturgeheimnis `secret` (`whsec_…`); bitte sofort sicher ablegen, es ist danach nicht mehr lesbar (nur rotieren). `Idempotency-Key` ist Pflicht: gleicher Schlüssel (mit demselben Token) + gleicher Inhalt liefert, wenn die erste Anlage abgeschlossen war, denselben Webhook (200) **ohne** Geheimnis; brach sie vorher ab, entsteht der Webhook jetzt (201 mit Geheimnis). Anderer Inhalt: 409 `idempotency_conflict`. Zugestellt wird vom Server im Minutentakt, nie im Aufruf; Aufbau der Nachrichten, Signatur und Wiederholungen: Webhooks-Handbuch.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"url":"https://erp.example.com/hooks/manage2hero","events":["payment.received","invoice.created"],"description":"ERP Buchhaltung"},"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]},"minItems":1,"maxItems":10,"uniqueItems":true},"description":{"type":"string","minLength":1,"maxLength":200}},"required":["url","events"],"additionalProperties":false}}}},"responses":{"200":{"description":"Wiederholung mit gleichem Idempotency-Key und gleichem Inhalt, nachdem die erste Anlage abgeschlossen war: derselbe Webhook, aber ohne `secret` (das Geheimnis steht nur in der 201-Antwort der Neuanlage)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received","invoice.created"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T08:15:30.412907+00:00","secret_rotated_at":null,"previous_secret_valid_until":null,"last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"201":{"description":"Angelegt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received","invoice.created"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T08:15:30.412907+00:00","secret_rotated_at":null,"previous_secret_valid_until":null,"last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null,"secret":"whsec_Q2xhdWRlRXhhbXBsZVNlY3JldE5vdFJlYWwwMDAwMDA"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]},"secret":{"type":"string"}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap","secret"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet (idempotency_conflict) oder Höchstzahl Webhooks erreicht (webhook_limit_reached). Bei `webhook_limit_reached`: `error.details` = `{ limit: 10, used: 10 }` (Sandbox: nur `{ limit: 3 }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}":{"get":{"summary":"Ein Webhook","description":"Ein Webhook-Endpunkt ohne Geheimnis. Unbekannte oder fremde Id: 404 `not_found`.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received","invoice.created"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T08:15:30.412907+00:00","secret_rotated_at":null,"previous_secret_valid_until":null,"last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"patch":{"summary":"Webhook ändern","description":"Ändert `url`, `events`, `description` (`null` löscht sie) oder `active` — mindestens ein Feld. Die neue Adresse wird wie bei der Anlage geprüft (`webhook_url_invalid`). `active: false` schaltet ab (`disabled_reason = manual`) und **pausiert** offene Zustellungen (`paused`, nichts wird verworfen); solange die API freigeschaltet ist, werden neue Ereignisse weiter aufgezeichnet (bis 10.000 je Webhook, 29 Tage). `active: true` macht das aufrufende Token zum Erzeuger-Token (der Webhook hängt dann an dessen Gültigkeit) — auch bei einem aktiven Webhook; bei einem abgeschalteten Webhook schaltet es ihn außerdem wieder ein, und der Zustelldienst nimmt die pausierten Zustellungen von selbst wieder auf (je Minute höchstens 60 je Webhook, älteste zuerst, gleiche Ereignis-Id). `paused_deliveries` (nur zusammen mit `active: true`, sonst 400 `validation_error`): `resume` (Standard) oder `discard` — verwirft alle pausierten Zustellungen (`abandoned`), z. B. wenn Sie per Änderungsabgleich aufholen. Unbekannte oder fremde Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"events":["payment.received"],"active":true},"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]},"minItems":1,"maxItems":10,"uniqueItems":true},"description":{"type":["string","null"],"minLength":1,"maxLength":200},"active":{"type":"boolean"},"paused_deliveries":{"type":"string","enum":["resume","discard"]}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T09:30:00.000000+00:00","secret_rotated_at":null,"previous_secret_valid_until":null,"last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}},"delete":{"summary":"Webhook löschen","description":"Löscht den Webhook samt Zustellverlauf; offene Zustellungen entfallen. Keine Query-Parameter, kein Body. Unbekannte, fremde oder bereits gelöschte Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","deleted":true},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"deleted":{"type":"boolean","enum":[true]}},"required":["id","deleted"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}/rotate-secret":{"post":{"summary":"Signaturgeheimnis rotieren","description":"Erzeugt ein neues Signaturgeheimnis und zeigt es **einmalig** an (`secret`). Das bisherige gilt **24 Stunden** weiter: in dieser Zeit steht im Kopf `X-M2H-Signature` neben der neuen auch die alte Signatur (zwei `v1=`-Einträge, `previous_secret_valid_until` nennt das Ende), damit Sie ohne Ausfall umstellen können. Eine zweite Rotation innerhalb dieser 24 Stunden beendet die Übergangszeit des ersten Geheimnisses. `Idempotency-Key` ist Pflicht; eine Wiederholung eines früheren Schlüssels (auch nach weiteren Rotationen) rotiert innerhalb von **30 Tagen** nicht noch einmal und zeigt das Geheimnis nicht erneut; danach gilt derselbe Schlüssel als neuer Vorgang. Unbekannte oder fremde Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"id":"3f6c1b52-8a47-4d09-9e1c-5b2a7d4e6f80","url":"https://erp.example.com/hooks/manage2hero","description":"ERP Buchhaltung","events":["payment.received","invoice.created"],"active":true,"disabled_reason":null,"disabled_at":null,"created_at":"2026-10-10T08:15:30.412907+00:00","updated_at":"2026-10-10T08:15:30.412907+00:00","secret_rotated_at":"2026-10-10T10:00:00.000000+00:00","previous_secret_valid_until":"2026-10-11T10:00:00.000000+00:00","last_success_at":null,"last_failure_at":null,"enqueue_failures":0,"pending_deliveries":0,"paused_deliveries":0,"recording_gap":null,"secret":"whsec_Q2xhdWRlUm90YXRlZFNlY3JldE5vdFJlYWwwMDAwMDA"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"url":{"type":"string"},"description":{"type":["string","null"]},"events":{"type":"array","items":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]}},"active":{"type":"boolean"},"disabled_reason":{"type":["string","null"],"enum":["manual","delivery_failed","token_revoked","token_expired","creator_lost_access","api_disabled",null]},"disabled_at":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"},"secret_rotated_at":{"type":["string","null"]},"previous_secret_valid_until":{"type":["string","null"]},"last_success_at":{"type":["string","null"]},"last_failure_at":{"type":["string","null"]},"enqueue_failures":{"type":"integer","minimum":0},"pending_deliveries":{"type":"integer","minimum":0},"paused_deliveries":{"type":"integer","minimum":0},"recording_gap":{"type":["object","null"],"properties":{"from":{"type":"string"},"to":{"type":["string","null"]}},"required":["from","to"]},"secret":{"type":"string"}},"required":["id","url","description","events","active","disabled_reason","disabled_at","created_at","updated_at","secret_rotated_at","previous_secret_valid_until","last_success_at","last_failure_at","enqueue_failures","pending_deliveries","paused_deliveries","recording_gap"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}/test":{"post":{"summary":"Testereignis senden","description":"Stellt ein Testereignis `webhook.test` für genau diesen Webhook ein (gleiche Signatur und Kopfzeilen wie jedes Ereignis, `data` enthält `webhook_id`). Gesendet wird vom Server im Minutentakt — das Ergebnis steht danach in `GET /v1/webhooks/{id}/deliveries`. Ein Versuch, ein Fehlschlag schaltet den Webhook **nicht** ab. `Idempotency-Key` ist Pflicht (gleicher Schlüssel mit demselben Token = dieselbe Testzustellung, auch nach Abschluss, solange sie im Zustellverlauf steht — dieser hält 30 Tage; danach löst derselbe Schlüssel ein neues Testereignis aus). Höchstens 3 Testereignisse warten gleichzeitig je Webhook: 429 `rate_limited`. Ein abgeschalteter Webhook: 400 `validation_error`. Unbekannte oder fremde Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"delivery":{"id":"b8d2e4f6-1a3c-4e5d-9f70-8c6b4a2e0d13","event_id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","event_type":"webhook.test","status":"pending","attempts":0,"replay_count":0,"created_at":"2026-10-10T09:02:11.208154+00:00","last_attempt_at":null,"next_attempt_at":"2026-10-10T09:02:11.208154+00:00","delivered_at":null,"response_status":null,"error":null}},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"delivery":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated","webhook.test"]},"status":{"type":"string","enum":["pending","succeeded","failed","abandoned","paused"]},"attempts":{"type":"integer"},"replay_count":{"type":"integer"},"created_at":{"type":"string"},"last_attempt_at":{"type":["string","null"]},"next_attempt_at":{"type":["string","null"]},"delivered_at":{"type":["string","null"]},"response_status":{"type":["integer","null"]},"error":{"type":["string","null"]}},"required":["id","event_id","event_type","status","attempts","replay_count","created_at","last_attempt_at","next_attempt_at","delivered_at","response_status","error"]}},"required":["delivery"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). Abgeschalteter Webhook: `error.details` = `{ \"webhook\": [\"invalid_value\"] }`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten). `error.details` = `{ limit: 3 }`, `Retry-After`: 60.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}/deliveries":{"get":{"summary":"Zustellverlauf eines Webhooks","description":"Zustellungen dieses Webhooks, neueste zuerst, mit Statuscode des Empfängers und einem festen Fehlercode (`timeout`, `connection_failed`, `tls_error`, `blocked_target`, `redirect_not_followed`, `http_status`) — **nie** der Antwortkörper des Empfängers und nie die Nutzlast. `status`: `pending` (wartet auf den nächsten Versuch), `succeeded`, `failed` (sechs Versuche erfolglos — der Webhook wurde abgeschaltet), `paused` (angehalten, weil der Webhook abgeschaltet ist oder war; wird nach dem Wiedereinschalten von selbst wieder aufgenommen, nach 29 Tagen nicht mehr), `abandoned` (verworfen: `paused_deliveries: discard`, ein Testereignis bei Abschaltung oder älter als 29 Tage beim Wiederaufnehmen); `failed` und `abandoned` lassen sich per Replay erneut einstellen (`POST …/deliveries/{delivery_id}/retry`, `POST …/deliveries/retry-failed`), `replay_count` zählt das. Zeitfilter auf den Zeitpunkt des Ereignisses: genau eine Form aus `period` (`today`, `yesterday`, `this_month`, `last_month`, `last_7_days`, `last_30_days`, `last_3_months`, `last_12_months`, `all`), `date` oder `from`/`to`; ohne Angabe gelten die letzten 30 Tage. Zustellungen werden 30 Tage aufbewahrt. Filter: `status`, `event_type`. Mit `next_cursor` weiterblättern. Unbekannte oder fremde Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":512},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"required":false,"name":"period","in":"query"},{"schema":{"type":"string"},"required":false,"name":"date","in":"query"},{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string","enum":["pending","succeeded","failed","abandoned","paused"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated","webhook.test"]},"required":false,"name":"event_type","in":"query"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"items":[{"id":"b8d2e4f6-1a3c-4e5d-9f70-8c6b4a2e0d13","event_id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","event_type":"payment.received","status":"succeeded","attempts":1,"replay_count":0,"created_at":"2026-10-10T09:02:11.208154+00:00","last_attempt_at":"2026-10-10T09:02:40.000000+00:00","next_attempt_at":null,"delivered_at":"2026-10-10T09:02:40.512300+00:00","response_status":200,"error":null}],"next_cursor":null},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated","webhook.test"]},"status":{"type":"string","enum":["pending","succeeded","failed","abandoned","paused"]},"attempts":{"type":"integer"},"replay_count":{"type":"integer"},"created_at":{"type":"string"},"last_attempt_at":{"type":["string","null"]},"next_attempt_at":{"type":["string","null"]},"delivered_at":{"type":["string","null"]},"response_status":{"type":["integer","null"]},"error":{"type":["string","null"]}},"required":["id","event_id","event_type","status","attempts","replay_count","created_at","last_attempt_at","next_attempt_at","delivered_at","response_status","error"]}},"next_cursor":{"type":["string","null"]}},"required":["items","next_cursor"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}/deliveries/{delivery_id}/retry":{"post":{"summary":"Zustellung erneut senden","description":"Stellt **eine** fehlgeschlagene (`failed`) oder verworfene (`abandoned`) Zustellung erneut ein: Sie wird wieder `pending`, ihre Versuche zählen neu (`attempts` ab 0, `replay_count` zählt die Wiederherstellungen) und sie wird im nächsten Minutentakt gesendet — mit **derselben** Ereignis-Id (`X-M2H-Event-Id`) und demselben Körper, aber neuem Zeitstempel und neuer Signatur. Der Webhook muss aktiv und sendefähig sein (sonst 400 `validation_error`: zuerst `PATCH {\"active\": true}`). Nicht möglich für wartende (`pending`) und zugestellte (`succeeded`) Zustellungen, für Testereignisse (`webhook.test`; dafür `POST /v1/webhooks/{id}/test`) und für Zustellungen, die älter als 29 Tage sind: 409 `delivery_not_replayable` (`error.details.reason`: `not_failed`, `test_event`, `expired`, `paused` — pausierte Zustellungen nimmt der Zustelldienst nach dem Wiedereinschalten von selbst wieder auf). Höchstens 1000 wiederhergestellte Zustellungen je Webhook und Stunde: 429 `rate_limited` mit `Retry-After`. `Idempotency-Key` ist Pflicht: derselbe Schlüssel für dieselbe Zustellung stößt nichts erneut an (`replayed: false`, aktueller Stand). Scheitert die Zustellung erneut sechsmal, wird der Webhook wie sonst abgeschaltet. Unbekannte oder fremde Webhook- oder Zustellungs-Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"},{"schema":{"type":"string","description":"Id der Zustellung (aus GET /v1/webhooks/{id}/deliveries)"},"required":true,"description":"Id der Zustellung (aus GET /v1/webhooks/{id}/deliveries)","name":"delivery_id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"delivery":{"id":"b8d2e4f6-1a3c-4e5d-9f70-8c6b4a2e0d13","event_id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","event_type":"payment.received","status":"pending","attempts":0,"replay_count":1,"created_at":"2026-10-10T09:02:11.208154+00:00","last_attempt_at":"2026-10-10T09:02:40.000000+00:00","next_attempt_at":"2026-10-12T09:30:00.000000+00:00","delivered_at":null,"response_status":503,"error":"http_status"},"replayed":true},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"delivery":{"type":"object","properties":{"id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"},"event_type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated","webhook.test"]},"status":{"type":"string","enum":["pending","succeeded","failed","abandoned","paused"]},"attempts":{"type":"integer"},"replay_count":{"type":"integer"},"created_at":{"type":"string"},"last_attempt_at":{"type":["string","null"]},"next_attempt_at":{"type":["string","null"]},"delivered_at":{"type":["string","null"]},"response_status":{"type":["integer","null"]},"error":{"type":["string","null"]}},"required":["id","event_id","event_type","status","attempts","replay_count","created_at","last_attempt_at","next_attempt_at","delivered_at","response_status","error"]},"replayed":{"type":"boolean"}},"required":["delivery","replayed"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). Abgeschalteter Webhook: `error.details` = `{ \"webhook\": [\"invalid_value\"] }`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Die Zustellung lässt sich nicht erneut senden (delivery_not_replayable: wartend, zugestellt, Testereignis oder älter als 29 Tage). `error.details` = `{ status, reason }` mit `reason` = `not_failed`, `test_event`, `expired` oder `paused`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten). `error.details` = `{ limit: 1000, retry_after }`; `Retry-After` 1–3600 Sekunden.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/webhooks/{id}/deliveries/retry-failed":{"post":{"summary":"Fehlgeschlagene Zustellungen erneut senden","description":"Sammelaufruf nach dem Wiedereinschalten: stellt fehlgeschlagene (`failed`) und verworfene (`abandoned`) Zustellungen dieses Webhooks erneut ein (Wirkung je Zustellung wie bei `POST …/deliveries/{delivery_id}/retry`) — **älteste zuerst, höchstens 100 je Aufruf**. Der Body ist optional (leer oder `{}` = alle der letzten 29 Tage) und höchstens 4 KB groß (413 `payload_too_large`); Filter: Zeitraum wie im Zustellverlauf (genau eine Form aus `period`, `date`, `from`/`to`), `status` (`failed` oder `abandoned`), `event_type` (nicht `webhook.test`) und `limit` (1–100). Antwort: `replayed` (Anzahl) und `remaining` (weitere passende Zustellungen) — bei `remaining > 0` den Aufruf mit **neuem** `Idempotency-Key` wiederholen. Der Webhook muss aktiv und sendefähig sein (sonst 400 `validation_error`); höchstens 1000 wiederhergestellte Zustellungen je Webhook und Stunde (429 `rate_limited` mit `Retry-After`; ohne Passendes antwortet der Aufruf mit `replayed: 0`). `Idempotency-Key` ist Pflicht: dieselbe Anfrage mit demselben Schlüssel stößt nichts erneut an und meldet `replayed` des ersten Aufrufs (`remaining` wird neu gezählt). Unbekannte oder fremde Id: 404.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Webhooks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Id des Webhooks (aus GET /v1/webhooks)"},"required":true,"description":"Id des Webhooks (aus GET /v1/webhooks)","name":"id","in":"path"},{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"example":{"status":"abandoned","period":"last_7_days","limit":100},"schema":{"type":"object","properties":{"period":{"type":"string","enum":["today","yesterday","this_month","last_month","last_7_days","last_30_days","last_3_months","last_12_months","all"]},"date":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"status":{"type":"string","enum":["failed","abandoned"]},"event_type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"replayed":42,"remaining":0},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"replayed":{"type":"integer"},"remaining":{"type":"integer"}},"required":["replayed","remaining"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`). Abgeschalteter Webhook: `error.details` = `{ \"webhook\": [\"invalid_value\"] }`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Der Body ist größer als 4 KB (payload_too_large, details.max_bytes: 4096)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten). `error.details` = `{ limit: 1000, retry_after }`; `Retry-After` 1–3600 Sekunden.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}},"/v1/sandbox/events":{"post":{"summary":"Sandbox: Ereignis simulieren","description":"Nur mit einem **Sandbox-Token** (`m2h_test_…`; mit einem echten Token gibt es den Endpunkt nicht: 404). Stellt ein Ereignis des Typs `type` (`payment.received`, `dunning.sent`, `contract.signed`, `invoice.created`, `document.created`, `email.sent`, `damage.created`, `contract.terminated`, `invoice.cancelled`, `damage.updated`) für ein **Musterobjekt** der Sandbox ein - ohne echte Buchung, Mail oder Zahlung. Empfänger sind die **aktiven** Webhooks der Sandbox, die den Typ abonnieren (höchstens 3 Webhooks je Sandbox); Antwort: `event_id`, `object_id` (das Musterobjekt, Details per GET mit Ihrem Token), `recipients` (Webhooks, an die dieser Vorgang eingestellt wurde) und `queued` (eingestellte Zustellungen) - beide stammen aus den Zustellungen des Vorgangs und ändern sich bei einer Wiederholung mit demselben Schlüssel nicht, auch wenn Sie Webhooks inzwischen abgeschaltet oder umgestellt haben - sowie `delivery`. Gesendet wird vom Server im Minutentakt, **mit Signatur, Wiederholungen, Selbstabschaltung und Replay wie bei echten Webhooks**, die Nachricht trägt `livemode: false` (und den Kopf `X-M2H-Livemode: false`); der Verlauf steht in `GET /v1/webhooks/{id}/deliveries`. `delivery: not_in_this_environment` heißt: Entwicklung und Staging stellen nichts zu (nur die Produktion sendet) - die Zustellungen bleiben dort wartend. Zugestellt wird nur bei aktivem API-Zugang (sonst 403 `sandbox_unavailable` bei jedem Aufruf). `Idempotency-Key` ist Pflicht: derselbe Schlüssel wählt dasselbe Musterobjekt und stellt nichts erneut ein; die `event_id` bleibt dabei etwa sieben Tage stabil (so lange gibt es die Zustellungen), danach beginnt ein neuer Vorgang mit neuer `event_id`. Quote: höchstens 100 wartende und 500 in 24 Stunden eingestellte simulierte Zustellungen je Sandbox (422 `sandbox_limit_reached`); Zustellungen der Sandbox werden nach 7 Tagen gelöscht.\n\nScope: `webhooks:manage` (Ersteller braucht: api_access (Vollzugriff)).","tags":["Garagenparks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[\\x21-\\x7E]{1,255}$","description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)"},"required":true,"description":"Eindeutiger Schlüssel je Vorgang, 1–255 Zeichen (z. B. eine UUID)","name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"type":"payment.received"},"schema":{"type":"object","properties":{"type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"],"description":"Ereignistyp, z. B. payment.received"}},"required":["type"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"example":{"success":true,"data":{"event_id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","event_type":"payment.received","object_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d","recipients":1,"queued":1,"delivery":"enabled"},"request_id":"req_4n2Xc9…"},"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"event_id":{"type":"string","format":"uuid","description":"Ereignis-Kennung (X-M2H-Event-Id und id der Nachricht)"},"event_type":{"type":"string","enum":["payment.received","dunning.sent","contract.signed","invoice.created","document.created","email.sent","damage.created","contract.terminated","invoice.cancelled","damage.updated"]},"object_id":{"type":"string","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$","description":"Kennung des Musterobjekts (in data der Nachricht)"},"recipients":{"type":"integer","description":"Webhooks, an die dieser Vorgang eingestellt wurde (bei Wiederholung unverändert)"},"queued":{"type":"integer","description":"Davon eingestellte Zustellungen (nur aktive Webhooks)"},"delivery":{"type":"string","enum":["enabled","not_in_this_environment"],"description":"enabled = der Server sendet; not_in_this_environment = Entwicklung/Staging stellen nichts zu (nur Produktion)"}},"required":["event_id","event_type","object_id","recipients","queued","delivery"]},"request_id":{"type":"string"}},"required":["success","data","request_id"]}}}},"400":{"description":"Ungültige Anfrage. `validation_error`: `error.details` ordnet jedem betroffenen Feld eine Liste fester Codes zu (z. B. `{ \"from\": [\"required\"] }`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"401":{"description":"Token fehlt, ist ungültig oder abgelaufen","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"403":{"description":"Scope oder Recht fehlt","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"404":{"description":"Nicht gefunden","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"409":{"description":"Idempotency-Key schon mit anderem Inhalt verwendet","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"413":{"description":"Body zu groß (die Grenze gilt je Endpunkt, siehe error.details.max_bytes in Byte)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"415":{"description":"Content-Type ist nicht application/json","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"429":{"description":"Zu viele Anfragen (Retry-After beachten)","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"},"Retry-After":{"$ref":"#/components/headers/Retry-After"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"500":{"description":"Interner Fehler (internal_error): mit der request_id an den Support wenden; schreibende Aufrufe mit demselben Idempotency-Key wiederholen","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/X-RateLimit-Limit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/X-RateLimit-Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/X-RateLimit-Reset"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}},"503":{"description":"Vorübergehend nicht verfügbar","headers":{"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"error":{"type":"object","properties":{"code":{"type":"string","enum":["missing_token","invalid_authorization_scheme","invalid_token","token_expired","wrong_environment","token_in_url_forbidden","insufficient_scope","insufficient_permissions","validation_error","invalid_cursor","cursor_expired","not_found","route_not_found","range_too_large","field_not_allowed","idempotency_key_required","idempotency_conflict","readings_locked","appointment_conflict","meter_exists","unit_not_configured","payload_too_large","session_has_transferred_records","unsupported_media_type","sandbox_unavailable","sandbox_limit_reached","import_limit_reached","import_total_limit_reached","import_rate_limited","period_conflict","range_invalid","unsupported_format","file_not_available","export_not_ready","webhook_url_invalid","webhook_limit_reached","delivery_not_replayable","rate_limited","service_unavailable","internal_error"]},"message":{"type":"string"},"details":{"anyOf":[{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"description":"validation_error: Feld → Fehlercodes, z. B. { \"from\": [\"required\"] } / map of field to error codes"},{"type":"array","items":{"type":"object","properties":{"row":{"type":"integer"},"field":{"type":"string"}},"required":["row","field"]},"description":"field_not_allowed: betroffene Datensätze und Felder / affected records and fields (at most 50)"},{"type":"object","properties":{"limit":{"type":"integer","description":"Grenze / limit"},"open":{"type":"integer","description":"import_limit_reached: Stand offener Importe / count of open imports"},"used":{"type":"integer","description":"import_rate_limited: neue Importe in der Stunde / new imports in the hour. webhook_limit_reached: vorhandene Webhooks / existing webhooks"},"retry_after":{"type":"integer","description":"Sekunden bis wieder Platz ist / seconds until there is room"},"max_bytes":{"type":"integer","description":"payload_too_large: Höchstgröße in Byte / maximum size in bytes"},"max_rows":{"type":"integer","description":"range_too_large (Datei): Höchstzahl Zeilen / maximum rows"},"status":{"type":["string","null"],"description":"delivery_not_replayable: Status der Zustellung / delivery status"},"reason":{"type":"string","description":"delivery_not_replayable: not_failed, test_event, expired, paused. unsupported_format: cell_too_long_for_xlsx"},"field":{"type":"string","description":"unsupported_format: betroffene Spalte / affected column"},"max_cell_chars":{"type":"integer","description":"unsupported_format: Höchstlänge einer Excel-Zelle / maximum cell length"},"supported_formats":{"type":"array","items":{"type":"string"},"description":"unsupported_format: erlaubte Formate / allowed formats"}},"description":"Grenzen und Gründe je Fehlercode / limits and reasons per error code"}]},"required_scope":{"type":"string"}},"required":["code","message"]},"request_id":{"type":"string"}},"required":["success","error","request_id"]}}}}}}}},"webhooks":{"payment.received":{"post":{"summary":"Zahlungseingang erfasst","description":"Ein Zahlungseingang (Betrag größer 0) wurde erfasst. Details: `GET /v1/payments/by-ids?ids={payment_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["payment.received"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"payment.received","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"payment_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["payment.received"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"payment_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["payment_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"dunning.sent":{"post":{"summary":"Mahnung versendet","description":"Eine Mahnung wurde versendet. Details: `GET /v1/dunning/notices/{dunning_notice_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["dunning.sent"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"dunning.sent","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"dunning_notice_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["dunning.sent"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"dunning_notice_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["dunning_notice_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"contract.signed":{"post":{"summary":"Vertrag unterschrieben","description":"Ein Vertrag hat den Status „unterschrieben“ erreicht. `lease_id` ist die Id des Vertrags. Details: `GET /v1/contracts/{lease_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["contract.signed"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"contract.signed","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"lease_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["contract.signed"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"lease_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["lease_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"invoice.created":{"post":{"summary":"Rechnung angelegt","description":"Eine Rechnung wurde angelegt (kein Entwurf) oder aus dem Entwurf freigegeben. Details: `GET /v1/invoices/{invoice_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["invoice.created"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"invoice.created","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"invoice_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["invoice.created"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["invoice_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"document.created":{"post":{"summary":"Dokument abgelegt","description":"Ein Dokument (Hauptordner der Mieterakte, Standortdatei) wurde abgelegt. Details: `GET /v1/documents/{document_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["document.created"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"document.created","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"document_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["document.created"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"document_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["document_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"email.sent":{"post":{"summary":"E-Mail an Mieter versendet","description":"Eine System-E-Mail an einen Mieter wurde versendet (dieselben Vorlagen wie bei `GET /v1/emails`). Details: `GET /v1/emails/{email_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["email.sent"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"email.sent","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"email_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["email.sent"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"email_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["email_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"damage.created":{"post":{"summary":"Schaden angelegt","description":"Eine Schaden-Fallakte wurde angelegt, auch über `POST /v1/damages`. Details: `GET /v1/damages/{damage_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["damage.created"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"damage.created","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"damage_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["damage.created"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"damage_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["damage_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"contract.terminated":{"post":{"summary":"Kündigung bestätigt","description":"Eine Kündigung wurde bestätigt (Verwaltungskündigung oder bestätigter Mieterantrag). Gemeldet wird die Bestätigung, nicht das Vertragsende (das Datum steht im Abruf als `end_date` der Kündigung). `lease_id` ist die Id des Vertrags. Nach einer Rücknahme und erneuten Kündigung kommt das Ereignis erneut. Details: `GET /v1/contracts/{lease_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["contract.terminated"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"contract.terminated","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"lease_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["contract.terminated"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"lease_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["lease_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"invoice.cancelled":{"post":{"summary":"Rechnung storniert","description":"Eine Rechnung (kein Entwurf) wurde storniert. `invoice_id` ist die stornierte ORIGINAL-Rechnung; die Storno-Rechnung meldet `invoice.created`. Details: `GET /v1/invoices/{invoice_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["invoice.cancelled"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"invoice.cancelled","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"invoice_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["invoice.cancelled"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"invoice_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["invoice_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"damage.updated":{"post":{"summary":"Schaden geändert","description":"Eine Schaden-Fallakte hat ein in der API sichtbares Feld geändert (Status, Art, Priorität, Beschreibung, Datum, Verursacher-Art, Melder-Art, Einheit/Standort, Fallnummer). Je Änderung ein Ereignis; Mehrfachmeldungen zum selben Objekt sind normal. Dokumente und Meldungen lösen es nicht aus (dafür `GET /v1/damages/changes`). Details: `GET /v1/damages/{damage_id}`.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["damage.updated"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"damage.updated","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"damage_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["damage.updated"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"damage_id":{"type":"string","format":"uuid","description":"Kennung des betroffenen Objekts. Details per GET mit Ihrem Token und dessen Lese-Scope."}},"required":["damage_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}},"webhook.test":{"post":{"summary":"Testereignis","description":"Ein Testereignis, ausgelöst mit `POST /v1/webhooks/{id}/test`. Es kann nicht abonniert werden und geht nur an diesen einen Webhook; es gibt genau einen Versuch, und ein Fehlschlag schaltet den Webhook nicht ab.\n\nWird als `POST` mit `Content-Type: application/json` an die https-Adresse des Webhooks gesendet, signiert mit `X-M2H-Signature: t=<Unix-Sekunden>,v1=<hex>` (HMAC-SHA256 über `<t>.<Rohkörper>` mit dem Geheimnis `whsec_…`; während einer Rotation zwei `v1`-Einträge). `t` ist der Zeitpunkt dieses Sendeversuchs; Abweichungen über 5 Minuten ablehnen. Mit **2xx** antworten, erst nachdem die Nachricht dauerhaft gespeichert ist; alles andere (anderer Status, Timeout nach 10 Sekunden, TLS-Fehler, Weiterleitung) zählt als Fehlschlag und wird wiederholt — bis zu 6 Versuche, danach wird der Webhook abgeschaltet. Die Ereignis-Kennung `id` bleibt bei jeder Wiederholung gleich; die Köpfe `X-M2H-Event-Id`, `X-M2H-Event-Type` und `X-M2H-Delivery-Attempt` (1–6) sind nicht signiert — zum Erkennen von Doppelten die `id` aus dem Körper verwenden, erst nach der Signaturprüfung. Die Reihenfolge der Nachrichten ist nicht garantiert. Der Körper kann jederzeit um neue Felder erweitert werden; unbekannte Felder ignorieren. Prüfcode, Wiederholungen und Betrieb: Webhooks-Handbuch.","tags":["Webhooks"],"security":[],"parameters":[{"schema":{"type":"string","description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge."},"required":true,"description":"Signatur `t=<Unix-Sekunden>,v1=<hex>`; während einer Rotation zwei `v1`-Einträge.","name":"X-M2H-Signature","in":"header"},{"schema":{"type":"string","format":"uuid","description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert)."},"required":true,"description":"Ereignis-Kennung (wie `id` im Körper; nicht signiert).","name":"X-M2H-Event-Id","in":"header"},{"schema":{"type":"string","enum":["webhook.test"],"description":"Ereignistyp (wie `type`; nicht signiert)."},"required":true,"description":"Ereignistyp (wie `type`; nicht signiert).","name":"X-M2H-Event-Type","in":"header"},{"schema":{"type":"string","pattern":"^[1-6]$","description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1."},"required":true,"description":"Nummer des Sendeversuchs, 1–6. Beginnt nach einem Replay wieder bei 1.","name":"X-M2H-Delivery-Attempt","in":"header"},{"schema":{"type":"string","enum":["true","false"],"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert."},"required":false,"description":"Wie `livemode` im Körper (`false` für eine Sandbox); nicht signiert.","name":"X-M2H-Livemode","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"example":{"id":"0e7f5a31-9c2b-4d68-8a14-6f3e2d1c0b97","type":"webhook.test","created_at":"2026-10-10T09:02:11.208Z","livemode":true,"data":{"webhook_id":"7c1d9e2a-3b4f-4a65-8d70-1e2f3a4b5c6d"}},"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Ereignis-Kennung. Bleibt bei jeder Wiederholung und jedem Replay gleich — damit Doppelte erkennen und ignorieren."},"type":{"type":"string","enum":["webhook.test"],"description":"Ereignistyp (für diese Nachricht konstant)."},"created_at":{"type":"string","format":"date-time","description":"Zeitpunkt des Geschäftsereignisses (ISO 8601, UTC). Nicht der Sendeversuch — der steht als `t` in `X-M2H-Signature`."},"livemode":{"type":"boolean","description":"`false` für Ereignisse einer Sandbox (Testmodus, Test-Token), sonst `true`. Damit halten Sie Test- und echte Ereignisse auseinander. Zustellungen, die vor Einführung des Feldes eingestellt wurden, tragen es nicht (eine Zustellung behält bei jeder Wiederholung und jedem Replay genau denselben Körper); ein fehlendes Feld gilt als `true`."},"data":{"type":"object","properties":{"webhook_id":{"type":"string","format":"uuid","description":"Id des Webhooks, an den das Testereignis gesendet wurde."}},"required":["webhook_id"],"description":"Dünne Nutzlast: nur die Kennung des Objekts, nie Namen, Beträge oder Adressen."}},"required":["id","type","created_at","data"]}}}},"responses":{"2XX":{"description":"Nachricht empfangen und gespeichert. Der Inhalt der Antwort ist egal und wird nie gespeichert."},"default":{"description":"Jede andere Antwort zählt als Fehlschlag und wird wiederholt (Weiterleitungen werden nicht verfolgt)."}}}}}}