{"openapi":"3.1.0","info":{"title":"RegTracer Runtime","description":"Regulatorische Infrastruktur für Software in der Energiewirtschaft. `POST /v1/pruefungen` prüft einen Sachverhalt gegen das veröffentlichte, belegte Regelwerk. Authentifizierung: `Authorization: Bearer rt_live_…` (API-Schlüssel aus dem Portal). MCP (Streamable HTTP) unter `/mcp`. Keine Rechtsberatung.","version":"0.1.0"},"paths":{"/v1/pruefungen":{"post":{"tags":["öffentliche API"],"summary":"Nachricht gegen das Regelwerk prüfen","description":"Kern-Endpunkt: anwendbare Pflichten mit berechneten Fristen, Belegen und offenen Punkten.\nDie Pruefung wird protokolliert (pruefung_id). Schluessel im Modus \"simulation\" erhalten eine\nLLM-Antwort ohne Pruef-Engine, gekennzeichnet mit modus=\"simulation\" (Tageskontingent je Schluessel).\nRegeln in Kuration erscheinen nur als Anzahl (in_pruefung_anzahl); in_pruefung ist immer leer.","operationId":"pruefung_v1_pruefungen_post","parameters":[{"name":"regelwerk","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regelwerk"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Nachricht"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pruefung V1 Pruefungen Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pflichten":{"post":{"tags":["öffentliche API"],"summary":"Anwendbare Pflichten ermitteln (ohne Protokoll)","operationId":"pflichten_v1_pflichten_post","parameters":[{"name":"regelwerk","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regelwerk"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Nachricht"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pflichten V1 Pflichten Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/fristen":{"post":{"tags":["öffentliche API"],"summary":"Frist einer Regel berechnen","operationId":"frist_v1_fristen_post","parameters":[{"name":"regelwerk","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regelwerk"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FristAnfrage"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Frist V1 Fristen Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regeln":{"get":{"tags":["öffentliche API"],"summary":"Übersicht über das Regelwerk (Anzahl je Domäne, keine einzelnen Regeln)","description":"Einzelne Regeln sind nicht abrufbar; anwendbare Pflichten liefert POST /v1/pruefungen fuer einen Sachverhalt.","operationId":"regeln_v1_regeln_get","parameters":[{"name":"regelwerk","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regelwerk"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regeln V1 Regeln Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/abschnitte/{abschnitt_id}":{"get":{"tags":["öffentliche API"],"summary":"Beleg im Wortlaut","operationId":"abschnitt_v1_abschnitte__abschnitt_id__get","parameters":[{"name":"abschnitt_id","in":"path","required":true,"schema":{"type":"integer","title":"Abschnitt Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Abschnitt V1 Abschnitte  Abschnitt Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/merkmale":{"get":{"tags":["öffentliche API"],"summary":"Merkmalskatalog: was eine Nachricht enthalten kann","operationId":"merkmale_v1_merkmale_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Merkmale V1 Merkmale Get"}}}}}}},"/v1/abdeckung":{"get":{"tags":["öffentliche API"],"summary":"Coverage Map: was RegTracer weiß (je Thema der regulatorischen Landkarte)","description":"Status je Landkarten-Thema: verifiziert (bestätigte Regel) · modelliert (Regeln in Kuration) ·\nin_arbeit (Quelle im Korpus) · geplant (Quelle noch nicht erfasst).","operationId":"abdeckung_v1_abdeckung_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Abdeckung V1 Abdeckung Get"}}}}}}},"/v1/regelwerk/releases":{"get":{"tags":["öffentliche API"],"summary":"Veröffentlichte Regelwerk-Versionen","operationId":"releases_v1_regelwerk_releases_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Releases V1 Regelwerk Releases Get"}}}}}}}},"components":{"schemas":{"Ereignis":{"properties":{"typ":{"type":"string","title":"Typ","description":"z. B. inbetriebnahme, stilllegung, betreiberwechsel","examples":["inbetriebnahme"]},"datum":{"type":"string","format":"date","title":"Datum"}},"type":"object","required":["typ","datum"],"title":"Ereignis"},"FristAnfrage":{"properties":{"regel":{"type":"string","maxLength":200,"title":"Regel","description":"Regel-Schluessel"},"ereignis_datum":{"type":"string","format":"date","title":"Ereignis Datum"},"stichtag":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Stichtag"}},"type":"object","required":["regel","ereignis_datum"],"title":"FristAnfrage"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Nachricht":{"properties":{"stichtag":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Stichtag","description":"Rechtslage zu diesem Datum; Vorgabe heute"},"rolle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rolle","description":"Marktrolle, siehe GET /v1/merkmale"},"anlage":{"additionalProperties":true,"type":"object","maxProperties":200,"title":"Anlage","description":"Merkmale der Anlage ohne Praefix 'anlage.' (nur skalare Werte)"},"ereignisse":{"items":{"$ref":"#/components/schemas/Ereignis"},"type":"array","maxItems":100,"title":"Ereignisse"},"merkmale":{"additionalProperties":true,"type":"object","maxProperties":200,"title":"Merkmale","description":"Weitere Merkmale mit vollem Schluessel (nur skalare Werte)"},"aktion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Aktion","description":"Geplante Aktion (vorgemerkt fuer Agent Guardrail, noch ohne Auswertung)"},"freitext":{"anyOf":[{"type":"string","maxLength":5000},{"type":"null"}],"title":"Freitext","description":"Freitext. Im Modus betrieb nicht ausgewertet. Im Modus simulation wird er an einen externen LLM-Anbieter übermittelt und mit der Prüfung protokolliert – keine personenbezogenen Daten eintragen"}},"type":"object","title":"Nachricht","description":"Ein Sachverhalt, der gegen das Regelwerk geprueft wird.","examples":[{"anlage":{"foerderregime":"eeg","leistung_kw":720,"netzanschluss":true,"typ":"pv"},"ereignisse":[{"datum":"2026-06-15","typ":"inbetriebnahme"}],"rolle":"anlagenbetreiber","stichtag":"2026-10-09"}]},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}