{"openapi":"3.1.0","info":{"title":"Stellplatznotizen API","version":"2.0.0","description":"Free News/MCP: 60 requests/minute, 1000/day UTC. Separate free calculations: 30/minute, 300/day UTC. Paid network keys have contracted quotas. MCP batches count each operation."},"servers":[{"url":"https://stellplatznotizen.de"}],"x-language":"de","x-mcp-tools":["latest_news","get_article","calculate_camping-budget","calculate_camping"],"paths":{"/api/calculate":{"get":{"summary":"Domain calculators and schemas","security":[],"responses":{"200":{"description":"Free calculator definitions"},"429":{"description":"Quota exhausted; observe Retry-After"}}},"post":{"summary":"Free calculation, available in preview: 30/minute, 300/UTC day","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"required":["calculator","inputs"],"properties":{"calculator":{"const":"camping-budget"},"inputs":{"type":"object","properties":{"nights":{"type":"integer","minimum":0,"maximum":366,"description":"Übernachtungen"},"pitchPerNight":{"type":"number","minimum":0,"maximum":100000,"description":"Platzgebühr pro Nacht (€)"},"travelers":{"type":"integer","minimum":1,"maximum":100,"description":"Personen"},"personPerNight":{"type":"number","minimum":0,"maximum":10000,"description":"Zusatzgebühr pro Person/Nacht (€)"},"kilometers":{"type":"number","minimum":0,"maximum":1000000,"description":"Gesamte Fahrstrecke (km)"},"litersPer100Km":{"type":"number","minimum":0,"maximum":100,"description":"Eigener Verbrauch (l/100 km)"},"fuelPrice":{"type":"number","minimum":0,"maximum":100,"description":"Kraftstoffpreis (€/l)"},"extrasTotal":{"type":"number","minimum":0,"maximum":10000000,"description":"Weitere Ausgaben gesamt (€)"}},"required":["nights","pitchPerNight","travelers","personPerNight","kilometers","litersPer100Km","fuelPrice","extrasTotal"],"additionalProperties":false}}},{"type":"object","additionalProperties":false,"required":["calculator","inputs"],"properties":{"calculator":{"const":"camping"},"inputs":{"type":"object","properties":{"packLimitKg":{"type":"number","minimum":0,"maximum":100000,"description":"Eigenes Packlimit (kg, optional)"},"items":{"type":"array","minItems":1,"maxItems":100,"description":"Bis zu 100 Packpositionen; Gewicht je Stück in Gramm, Stückzahl 1 bis 1.000.","items":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"description":"Optionale Bezeichnung"},"weightGrams":{"type":"number","minimum":0,"maximum":1000000,"description":"Gewicht je Stück in Gramm"},"quantity":{"type":"integer","minimum":1,"maximum":1000,"description":"Stückzahl"}},"required":["weightGrams","quantity"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false}}}]}}}},"responses":{"200":{"description":"Inputs, assumptions, formula and numeric results"},"400":{"description":"Invalid input or JSON"},"413":{"description":"Body exceeds 20000 bytes"},"429":{"description":"Quota exhausted; observe Retry-After"},"503":{"description":"Quota storage temporarily unavailable"}}}},"/api/news":{"get":{"summary":"Published article summaries","parameters":[{"name":"portal","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"scope","in":"query","description":"network requires a paid key","schema":{"type":"string","enum":["site","network"],"default":"site"}}],"security":[{},{"apiKey":[]}],"responses":{"200":{"description":"Published source-linked JSON result"},"401":{"description":"Invalid or revoked key"},"429":{"description":"Quota exhausted; observe Retry-After"},"503":{"description":"Public service disabled"}}}},"/api/mcp":{"post":{"summary":"Stateless MCP JSON-RPC","security":[{},{"apiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number"]},"method":{"type":"string"},"params":{"type":"object"}}},{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object"}}]}}}},"responses":{"200":{"description":"Published source-linked JSON result"},"401":{"description":"Invalid or revoked key"},"429":{"description":"Quota exhausted; observe Retry-After"},"503":{"description":"Public service disabled"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Network API key; not an admin token"}}}}