{"openapi":"3.1.0","info":{"title":"Kai API – Schweizer Recht","version":"1.0.0","description":"Schweizer Bundesrecht im Wortlaut durchsuchen und Kai Fragen stellen. Gesetzes-Endpunkte funktionieren ohne Key (kleines Tageslimit), mit Key (Bearer kai_live_...) grosszügiger. Kanzlei-Endpunkte brauchen einen Kanzlei-Key. Kai ist kein Anwalt. MCP-Server: https://kaianwalt.ch\r/mcp"},"servers":[{"url":"https://kaianwalt.ch\r"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"Article":{"type":"object","properties":{"citation":{"type":"string","example":"Art. 335b OR"},"act":{"type":"string"},"article":{"type":"string"},"heading":{"type":["string","null"]},"context":{"type":["string","null"]},"text":{"type":"string"},"fedlex_url":{"type":"string"},"kai_url":{"type":"string"},"version_date":{"type":"string","format":"date"}}},"Source":{"type":"object","properties":{"citation":{"type":"string"},"heading":{"type":["string","null"]},"url":{"type":"string"}}},"Answer":{"type":"object","properties":{"answer":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/Source"}}}},"Client":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"reference":{"type":["string","null"]},"email":{"type":["string","null"]},"phone":{"type":["string","null"]},"notes":{"type":["string","null"]},"archived":{"type":"boolean"},"created_at":{"type":"string"},"updated_at":{"type":"string"}}},"ClientInput":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"reference":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"notes":{"type":"string"},"archived":{"type":"boolean"}}},"Case":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"status":{"type":"string"},"client_id":{"type":["string","null"]},"created_at":{"type":"string"},"updated_at":{"type":"string"}}}}},"paths":{"/api/v1/search":{"get":{"operationId":"searchSwissLaw","summary":"Gesetzesartikel suchen","tags":["Gesetze"],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Suchanfrage auf Deutsch"},{"name":"acts","in":"query","schema":{"type":"string"},"description":"Kommagetrennt, z. B. OR,ZGB"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":8}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Article"}}}}}}},"429":{"description":"Limit erreicht","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/laws":{"get":{"operationId":"listLaws","summary":"Verfügbare Erlasse","tags":["Gesetze"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}}}}}}}}}},"/api/v1/laws/{act}/{article}":{"get":{"operationId":"getArticle","summary":"Artikel im Wortlaut","tags":["Gesetze"],"parameters":[{"name":"act","in":"path","required":true,"schema":{"type":"string"},"example":"OR"},{"name":"article","in":"path","required":true,"schema":{"type":"string"},"example":"271a"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Article"}}}},"404":{"description":"Nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/ask":{"post":{"operationId":"askKai","summary":"Kai eine Rechtsfrage stellen","tags":["Kai"],"security":[{"bearer":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["question"],"properties":{"question":{"type":"string"},"history":{"type":"array","items":{"type":"object","properties":{"role":{"enum":["user","assistant"]},"content":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Answer"}}}},"401":{"description":"Key fehlt oder ungültig","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit erreicht","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/clients":{"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"listClients","summary":"Klienten","parameters":[{"name":"archived","in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Client"}}}}}}}}},"post":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"createClient","summary":"Klient anlegen","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientInput"}}}},"responses":{"201":{"description":"Angelegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}}}}},"/api/v1/clients/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"getClient","summary":"Klient mit Fällen","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}},"404":{"description":"Nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"updateClient","summary":"Klient ändern oder archivieren","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientInput"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Client"}}}}}},"delete":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"deleteClient","summary":"Klient löschen (Fälle bleiben)","responses":{"204":{"description":"Gelöscht"}}}},"/api/v1/cases":{"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"listCases","summary":"Fälle der Kanzlei","parameters":[{"name":"client_id","in":"query","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Case"}}}}}}}}},"post":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"createCase","summary":"Fall anlegen","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["title"],"properties":{"title":{"type":"string"},"client_id":{"type":"string","format":"uuid"}}}}}},"responses":{"201":{"description":"Angelegt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Case"}}}}}}},"/api/v1/cases/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"getCase","summary":"Fall mit Fristen, Chronologie und Dateien","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Nicht gefunden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cases/{id}/files":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"post":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"uploadFiles","summary":"Dateien hochladen (PDF, Bilder, Word, Excel)","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","format":"binary"}}}}}}},"responses":{"201":{"description":"Hochgeladen, wird im Hintergrund gelesen","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/v1/cases/{id}/messages":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"listCaseMessages","summary":"Verlauf des Falls","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}},"post":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"askInCase","summary":"Frage im Fall (Kai liest die Unterlagen)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string"}}}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Answer"}}}}}}},"/api/v1/files/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"format","in":"query","schema":{"enum":["json"]}}],"get":{"security":[{"bearer":[]}],"tags":["Kanzlei"],"operationId":"downloadFile","summary":"Download (302 oder { url })","responses":{"302":{"description":"Weiterleitung"}}}}}}