{"openapi":"3.1.0","info":{"title":"NebenkostenBlitz AI import validation API","version":"1.0.0","summary":"Public, stateless endpoints for AI-assisted Nebenkostenabrechnung data validation.","description":"AI assistants may collect and structure data, but must not calculate final tenant balances. NebenkostenBlitz performs deterministic validation, calculation, checkout, and PDF generation."},"servers":[{"url":"https://nebenkostenblitz.de"}],"tags":[{"name":"AI discovery","description":"Public machine-readable metadata for agents and search tools."},{"name":"AI validation","description":"Stateless validation endpoints that return safe summaries and issues without persisting anonymous drafts."}],"paths":{"/ai/manifest.json":{"get":{"tags":["AI discovery"],"summary":"Product manifest for agents and search tools","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/ai/examples.json":{"get":{"tags":["AI discovery"],"summary":"Fictional non-PII examples and import block templates","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/ai/openapi.json":{"get":{"tags":["AI discovery"],"summary":"This minimal OpenAPI document","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/ai/schema.json":{"get":{"tags":["AI discovery"],"summary":"Simple import schema","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/ai/advanced-schema.json":{"get":{"tags":["AI discovery"],"summary":"Advanced import schema for heating, water, meters, and split rules","responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ai-import/validate":{"post":{"tags":["AI validation"],"summary":"Validate a simple AI import block or JSON payload","description":"Returns validity, blocking status, issue codes/messages, and aggregate counts. It does not return raw payloads or normalized drafts by default and must not be used to calculate final tenant balances.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","description":"Full assistant answer, raw JSON, or BEGIN_NEBENKOSTENBLITZ_IMPORT block.","maxLength":102400}},"required":["text"]}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ai-import/validate-advanced":{"post":{"tags":["AI validation"],"summary":"Validate an advanced AI import block or JSON payload","description":"Returns safe validation summaries for advanced heating, water, meter, and Betriebskosten data. Final tenant balances are always calculated later by NebenkostenBlitz.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"text":{"type":"string","description":"Full assistant answer, raw JSON, or BEGIN_NEBENKOSTENBLITZ_ADVANCED_IMPORT block.","maxLength":153600}},"required":["text"]}}}},"responses":{"200":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"JSON response","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{}},"security":[],"x-nebenkostenblitz-safety-rules":["Do not calculate final tenant balances, Nachzahlung, Guthaben, or PDF totals.","Do not expose or call account, admin, checkout, webhook, PDF, history, or private API routes from agent integrations.","Do not log raw tenant/property/address payloads or send them to analytics."]}