{"openapi":"3.1.0","info":{"title":"Janeway API Gateway","description":"Unified REST API fuer das Janeway Ecosystem","version":"0.1.0"},"paths":{"/v1/contacts/contacts":{"get":{"summary":"Kontakte auflisten","tags":["Kontakte"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"group_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"anniversary":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","first_name","last_name","is_favorite","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Kontakt anlegen","tags":["Kontakte"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","minLength":1,"maxLength":255},"last_name":{"type":"string","maxLength":255},"nickname":{"type":"string","maxLength":255},"email":{"type":"string","maxLength":255,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":50},"company":{"type":"string","maxLength":255},"position":{"type":"string","maxLength":255},"address":{"type":"string","maxLength":500},"city":{"type":"string","maxLength":255},"postal_code":{"type":"string","maxLength":20},"country":{"type":"string","maxLength":255},"notes":{"type":"string","maxLength":10000},"avatar_url":{"type":"string","maxLength":2048,"format":"uri"},"group_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"birthday":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"anniversary":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"website":{"type":"string","maxLength":2048,"format":"uri"},"is_favorite":{"type":"boolean"}},"required":["first_name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"group_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"anniversary":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","first_name","last_name","is_favorite","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/contacts/contacts/{id}":{"get":{"summary":"Kontakt abrufen","tags":["Kontakte"],"parameters":[{"name":"id","in":"path","required":true,"description":"Kontakt-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"group_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"anniversary":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","first_name","last_name","is_favorite","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Kontakt aktualisieren","tags":["Kontakte"],"parameters":[{"name":"id","in":"path","required":true,"description":"Kontakt-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"first_name":{"type":"string","minLength":1,"maxLength":255},"last_name":{"type":"string","maxLength":255},"nickname":{"type":"string","maxLength":255},"email":{"type":"string","maxLength":255,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"phone":{"type":"string","maxLength":50},"company":{"type":"string","maxLength":255},"position":{"type":"string","maxLength":255},"address":{"type":"string","maxLength":500},"city":{"type":"string","maxLength":255},"postal_code":{"type":"string","maxLength":20},"country":{"type":"string","maxLength":255},"notes":{"type":"string","maxLength":10000},"avatar_url":{"type":"string","maxLength":2048,"format":"uri"},"group_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"birthday":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"anniversary":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"website":{"type":"string","maxLength":2048,"format":"uri"},"is_favorite":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"group_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"anniversary":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","first_name","last_name","is_favorite","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Kontakt löschen (Soft-Delete)","tags":["Kontakte"],"parameters":[{"name":"id","in":"path","required":true,"description":"Kontakt-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/contacts/contacts/birthdays":{"get":{"summary":"Anstehende Geburtstage","tags":["Kontakte"],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}]},"middle_name":{"anyOf":[{"type":"string"},{"type":"null"}]},"prefix":{"anyOf":[{"type":"string"},{"type":"null"}]},"suffix":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"phone":{"anyOf":[{"type":"string"},{"type":"null"}]},"company":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"department":{"anyOf":[{"type":"string"},{"type":"null"}]},"address":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}]},"group_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"anniversary":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","first_name","last_name","is_favorite","created_at","updated_at"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/contacts/groups":{"get":{"summary":"Gruppen auflisten","tags":["Gruppen"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","color","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Gruppe anlegen","tags":["Gruppen"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"type":"string","maxLength":50}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","color","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/contacts/groups/{id}":{"get":{"summary":"Gruppe abrufen","tags":["Gruppen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Gruppen-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","color","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Gruppe aktualisieren","tags":["Gruppen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Gruppen-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"type":"string","maxLength":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","name","color","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Gruppe löschen","tags":["Gruppen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Gruppen-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/contacts/export":{"get":{"summary":"Kontakte exportieren (VCF/CSV)","tags":["Export"],"parameters":[{"name":"format","in":"query","required":false,"description":"vcf | csv","schema":{"type":"string","enum":["vcf","csv"]}}],"responses":{"200":{"description":"Erfolg"}}}},"/v1/calendar/events":{"get":{"summary":"Termine auflisten","tags":["Termine"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche (Titel, Beschreibung, Ort)","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"Frühestes start_datetime (ISO-8601)","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"Spätestes end_datetime (ISO-8601)","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","start_datetime","end_datetime","all_day","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Termin anlegen","tags":["Termine"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"color":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"required":["title","start_datetime","end_datetime"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","start_datetime","end_datetime","all_day","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/calendar/events/{id}":{"get":{"summary":"Termin abrufen","tags":["Termine"],"parameters":[{"name":"id","in":"path","required":true,"description":"Termin-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","start_datetime","end_datetime","all_day","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Termin aktualisieren","tags":["Termine"],"parameters":[{"name":"id","in":"path","required":true,"description":"Termin-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}]},"color":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"start_datetime":{"type":"string"},"end_datetime":{"type":"string"},"all_day":{"type":"boolean"},"location":{"anyOf":[{"type":"string"},{"type":"null"}]},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"calendar_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"reminder_minutes":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"exception_dates":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","start_datetime","end_datetime","all_day","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Termin löschen","tags":["Termine"],"parameters":[{"name":"id","in":"path","required":true,"description":"Termin-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/calendar/calendars":{"get":{"summary":"Kalender auflisten","tags":["Kalender"],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"is_system":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","is_system","created_at","updated_at"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}},"post":{"summary":"Kalender anlegen","tags":["Kalender"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"type":"string","maxLength":50},"is_system":{"type":"boolean"}},"required":["name","color"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"is_system":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","is_system","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/calendar/calendars/{id}":{"patch":{"summary":"Kalender aktualisieren","tags":["Kalender"],"parameters":[{"name":"id","in":"path","required":true,"description":"Kalender-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"type":"string","maxLength":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"is_system":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","is_system","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Kalender löschen","tags":["Kalender"],"parameters":[{"name":"id","in":"path","required":true,"description":"Kalender-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/calendar/birthdays":{"get":{"summary":"Anstehende Geburtstage aus Kontakten","tags":["Geburtstage"],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"first_name":{"type":"string"},"last_name":{"type":"string"},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","workspace_id","first_name","last_name"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/calendar/export":{"get":{"summary":"Kalender exportieren (JSON/ICS)","tags":["Export"],"parameters":[{"name":"format","in":"query","required":false,"description":"json | ics","schema":{"type":"string","enum":["json","ics"]}}],"responses":{"200":{"description":"Erfolg"}}}},"/v1/tasks/tasks":{"get":{"summary":"Aufgaben auflisten","tags":["Aufgaben"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche (title, description)","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Aufgabe anlegen","tags":["Aufgaben"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$"},{"type":"null"}]},"priority":{"default":"medium","type":"string","enum":["low","medium","high","urgent"]},"status":{"default":"open","type":"string","enum":["open","done"]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"is_starred":{"default":false,"type":"boolean"},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"sort_order":{"default":0,"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["title","priority","status","is_starred","sort_order"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/tasks/tasks/{id}":{"get":{"summary":"Aufgabe abrufen","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Aufgabe aktualisieren","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":500},"description":{"anyOf":[{"type":"string","maxLength":10000},{"type":"null"}]},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string","pattern":"^\\d{2}:\\d{2}(:\\d{2})?$"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"is_starred":{"type":"boolean"},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Aufgabe löschen (Soft-Delete; ?permanent=1 für Hard-Delete)","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}},{"name":"permanent","in":"query","required":false,"description":"1 = Hard-Delete (endgültig)","schema":{"type":"string","enum":["1"]}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/tasks/tasks/{id}/tags":{"post":{"summary":"Tag an Aufgabe anhängen","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"tag_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["tag_id"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}},"delete":{"summary":"Tag von Aufgabe entfernen","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}},{"name":"tag_id","in":"query","required":true,"description":"Tag-UUID","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/tasks/tasks/{id}/restore":{"post":{"summary":"Aufgabe aus Papierkorb wiederherstellen","tags":["Aufgaben"],"parameters":[{"name":"id","in":"path","required":true,"description":"Aufgabe-UUID","schema":{"type":"string"}}],"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/tasks/tasks/trash":{"delete":{"summary":"Papierkorb leeren (alle gelöschten Aufgaben dauerhaft löschen)","tags":["Aufgaben"],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"deleted":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["success","deleted"],"additionalProperties":false}}}}}}},"/v1/tasks/lists":{"get":{"summary":"Listen auflisten","tags":["Listen"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche (title, description)","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","created_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Liste anlegen","tags":["Listen"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"default":"#6366f1","type":"string","maxLength":50}},"required":["name","color"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","created_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/tasks/lists/{id}":{"get":{"summary":"Liste abrufen","tags":["Listen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Listen-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","created_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Liste aktualisieren","tags":["Listen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Listen-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"color":{"type":"string","maxLength":50}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","created_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Liste löschen","tags":["Listen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Listen-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/tasks/export":{"get":{"summary":"Aufgaben und Listen exportieren (DSGVO Art. 20)","tags":["Export"],"parameters":[{"name":"format","in":"query","required":false,"description":"json (derzeit einziges unterstütztes Format)","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","const":"json"},"exported_at":{"type":"string"},"user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tasks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"list_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"parent_task_id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_date":{"anyOf":[{"type":"string"},{"type":"null"}]},"due_time":{"anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"type":"string","enum":["low","medium","high","urgent"]},"status":{"type":"string","enum":["open","done"]},"is_starred":{"type":"boolean"},"sort_order":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"recurrence":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["daily","weekly","monthly","yearly","custom"]},"interval":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"days_of_week":{"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"end_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["type","interval"],"additionalProperties":false},{"type":"null"}]},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","list_id","parent_task_id","title","description","due_date","due_time","priority","status","is_starred","sort_order","recurrence","completed_at","deleted_at","created_at","updated_at"],"additionalProperties":false}},"lists":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"color":{"type":"string"},"created_at":{"type":"string"}},"required":["id","workspace_id","created_by","name","color","created_at"],"additionalProperties":false}}},"required":["format","exported_at","user_id","workspace_id","tasks","lists"],"additionalProperties":false}}}}}}},"/v1/notes/notes":{"get":{"summary":"Notizen auflisten","tags":["Notizen"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset für Pagination","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche in Titel und Inhalt","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"content":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","content","color","is_favorite","is_deleted","deleted_at","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Notiz anlegen","tags":["Notizen"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":500},"content":{"type":"string","maxLength":1000000},"color":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"content":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","content","color","is_favorite","is_deleted","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/notes/notes/{id}":{"get":{"summary":"Notiz abrufen","tags":["Notizen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Notiz-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"content":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","content","color","is_favorite","is_deleted","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Notiz aktualisieren","tags":["Notizen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Notiz-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":500},"content":{"type":"string"},"color":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"content":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","content","color","is_favorite","is_deleted","deleted_at","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Notiz löschen (Soft-Delete)","tags":["Notizen"],"parameters":[{"name":"id","in":"path","required":true,"description":"Notiz-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}},"/v1/notes/export":{"get":{"summary":"Alle Notizen exportieren (JSON, inkl. gelöschte — DSGVO Art. 20)","tags":["Export"],"parameters":[{"name":"format","in":"query","required":false,"description":"Exportformat (aktuell nur json)","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","const":"json"},"exported_at":{"type":"string"},"user_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"notes":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_by":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"type":"string"},"content":{"type":"string"},"color":{"anyOf":[{"type":"string"},{"type":"null"}]},"is_favorite":{"type":"boolean"},"is_deleted":{"type":"boolean"},"deleted_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_by","title","content","color","is_favorite","is_deleted","deleted_at","created_at","updated_at"],"additionalProperties":false}}},"required":["format","exported_at","user_id","workspace_id","notes"],"additionalProperties":false}}}}}}},"/v1/chat/export":{"get":{"summary":"Chat-Verlauf exportieren (DSGVO)","description":"Exportiert alle Konversationen + Nachrichten des aktiven Workspace als JSON.","tags":["Export"],"parameters":[{"name":"format","in":"query","required":false,"description":"Exportformat (nur json)","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","const":"json"},"exported_at":{"type":"string"},"user_id":{"type":"string"},"workspace_id":{"type":"string"},"conversations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"},"updated_at":{"type":"string"}},"required":["id","workspace_id","created_at","updated_at"],"additionalProperties":false}},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"conversation_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"role":{"type":"string"},"content":{"type":"string"},"created_at":{"type":"string"}},"required":["id","conversation_id","role","content","created_at"],"additionalProperties":false}}},"required":["format","exported_at","user_id","workspace_id","conversations","messages"],"additionalProperties":false}}}}}}},"/v1/agents/agents/{id}":{"get":{"summary":"Agent abrufen","description":"Liest einen Agenten des Workspace. Service-zu-Service: Bearer-Service-Token + Header `X-Workspace-Id`.","tags":["Agents"],"parameters":[{"name":"id","in":"path","required":true,"description":"Agent-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"model":{"anyOf":[{"type":"string"},{"type":"null"}]},"created_at":{"type":"string"}},"required":["name","status","system_prompt","model","created_at"],"additionalProperties":false}}}}}},"patch":{"summary":"Agent-System-Prompt aktualisieren","description":"Aktualisiert den System-Prompt. Service-zu-Service: Bearer-Service-Token + Header `X-Workspace-Id`.","tags":["Agents"],"parameters":[{"name":"id","in":"path","required":true,"description":"Agent-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"system_prompt":{"type":"string"}},"required":["system_prompt"],"additionalProperties":false}}}},"responses":{"204":{"description":"Aktualisiert (kein Inhalt)"}}}},"/v1/immo/objects":{"get":{"summary":"Objekte auflisten","tags":["Objects"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Max. Anzahl (Default 50)","schema":{"type":"integer"}},{"name":"offset","in":"query","required":false,"description":"Offset","schema":{"type":"integer"}},{"name":"search","in":"query","required":false,"description":"Volltextsuche (Titel/Ort)","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"kind":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort_order":{"type":"number"}},"required":["url","kind","category","sort_order"],"additionalProperties":false}},"titelbild_url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titel","status","vermarktungsart","nutzungsart","objektart","id","workspace_id","created_at","updated_at"],"additionalProperties":false}},"total":{"type":"number"}},"required":["data","total"],"additionalProperties":false}}}}}},"post":{"summary":"Objekt anlegen","tags":["Objects"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}}},"required":["titel","status","vermarktungsart","nutzungsart","objektart"],"additionalProperties":false}}}},"responses":{"201":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"kind":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort_order":{"type":"number"}},"required":["url","kind","category","sort_order"],"additionalProperties":false}},"titelbild_url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titel","status","vermarktungsart","nutzungsart","objektart","id","workspace_id","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}}},"/v1/immo/objects/{id}":{"get":{"summary":"Objekt abrufen","tags":["Objects"],"parameters":[{"name":"id","in":"path","required":true,"description":"Objekt-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"kind":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort_order":{"type":"number"}},"required":["url","kind","category","sort_order"],"additionalProperties":false}},"titelbild_url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titel","status","vermarktungsart","nutzungsart","objektart","id","workspace_id","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"patch":{"summary":"Objekt aktualisieren","tags":["Objects"],"parameters":[{"name":"id","in":"path","required":true,"description":"Objekt-UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}}},"additionalProperties":false}}}},"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"titel":{"type":"string","minLength":1,"maxLength":255},"status":{"default":"draft","type":"string","enum":["draft","active","archived"]},"vermarktungsart":{"type":"string","enum":["KAUF","MIETE_PACHT"]},"nutzungsart":{"type":"string","enum":["WOHNEN","GEWERBE","ANLAGE","WAZ"]},"objektart":{"type":"string","enum":["haus","wohnung","grundstueck","gewerbe","ferien","tiny_house","sonstige"]},"objektart_subtype":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"objekt_nr":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"strasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"hausnummer":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"plz":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ort":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"land":{"type":"string","maxLength":3},"etage":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"anzahl_etagen":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_lat":{"anyOf":[{"type":"number"},{"type":"null"}]},"geo_lng":{"anyOf":[{"type":"number"},{"type":"null"}]},"adresse_sichtbar":{"type":"boolean"},"wohnflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nutzflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"grundstuecksflaeche":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_zimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_schlafzimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"anzahl_badezimmer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"baujahr":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"kaufpreis":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaltmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"warmmiete":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"nebenkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"heizkosten":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"kaution":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"provision":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"waehrung":{"type":"string","maxLength":3},"energieausweistyp":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"energiekennwert":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"energieeffizienzklasse":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"befeuerungsart":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"beschreibung":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"ausstattung_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"lage_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"sonstiges_text":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}]},"openimmo_extra":{"type":"object","properties":{"balkon":{"type":"boolean"},"terrasse":{"type":"boolean"},"garten":{"type":"boolean"},"keller":{"type":"boolean"},"dachboden":{"type":"boolean"},"aufzug":{"type":"boolean"},"einbaukueche":{"type":"boolean"},"gaeste_wc":{"type":"boolean"},"kamin":{"type":"boolean"},"klimatisiert":{"type":"boolean"},"sauna":{"type":"boolean"},"swimmingpool":{"type":"boolean"},"wintergarten":{"type":"boolean"},"barrierefrei":{"type":"boolean"},"rollstuhlgerecht":{"type":"boolean"},"moebliert":{"type":"string","enum":["nein","teil","voll"]},"stellplatz_art":{"type":"string","enum":["garage","tiefgarage","carport","aussen","parkhaus","keiner"]},"anzahl_stellplaetze":{"type":"integer","minimum":0,"maximum":9007199254740991},"objektzustand":{"type":"string","enum":["ERSTBEZUG","NEUWERTIG","GEPFLEGT","MODERNISIERT","RENOVIERUNGSBEDUERFTIG","SANIERUNGSBEDUERFTIG","NACH_VEREINBARUNG"]},"heizungsart":{"type":"string","enum":["zentral","fussboden","etage","fern","ofen","waermepumpe"]},"energietraeger":{"type":"string","enum":["gas","oel","fernwaerme","elektro","solar","erdwaerme","pellet","luftwp"]},"energie_ausstelldatum":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_gueltig_bis":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"energie_mit_warmwasser":{"type":"boolean"},"energie_baujahr":{"type":"integer","minimum":0,"maximum":9007199254740991},"verfuegbar_ab":{"type":"string","maxLength":255},"hausgeld":{"type":"number","minimum":0},"courtage_text":{"type":"string","maxLength":2000},"erschliessungskosten":{"type":"string","maxLength":2000}},"additionalProperties":{}},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"media":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"kind":{"type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"sort_order":{"type":"number"}},"required":["url","kind","category","sort_order"],"additionalProperties":false}},"titelbild_url":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["titel","status","vermarktungsart","nutzungsart","objektart","id","workspace_id","created_at","updated_at"],"additionalProperties":false}},"required":["data"],"additionalProperties":false}}}}}},"delete":{"summary":"Objekt löschen (Soft)","tags":["Objects"],"parameters":[{"name":"id","in":"path","required":true,"description":"Objekt-UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Erfolg","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"}},"required":["success"],"additionalProperties":false}}}}}}}},"components":{"schemas":{}}}