{"openapi":"3.1.0","info":{"title":"Solaire au quotidien API","version":"2.0.0","description":"News/MCP gratuit : 60 requêtes/minute, 1 000/jour UTC. Calcul gratuit distinct : 30/minute, 300/jour UTC. Les clés payantes ont des quotas contractuels. Chaque opération d’un lot MCP compte."},"servers":[{"url":"https://solaireauquotidien.fr"}],"x-language":"fr","x-mcp-tools":["latest_news","get_article","calculate_solar"],"paths":{"/api/calculate":{"get":{"summary":"Calculateurs de ce domaine et schémas","security":[],"responses":{"200":{"description":"Free calculator definitions"},"429":{"description":"Quota épuisé ; respecter Retry-After"}}},"post":{"summary":"Calcul gratuit, disponible en aperçu : 30/minute, 300/jour UTC","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","additionalProperties":false,"required":["calculator","inputs"],"properties":{"calculator":{"const":"solar"},"inputs":{"type":"object","properties":{"kwp":{"type":"number","minimum":0,"maximum":10000,"description":"Puissance (kWc)"},"yieldPerKwp":{"type":"number","minimum":0,"maximum":3000,"description":"Production annuelle supposée (kWh/kWc)"},"selfConsumptionPercent":{"type":"number","minimum":0,"maximum":100,"description":"Part autoconsommée supposée (%)"},"annualUseKwh":{"type":"number","minimum":0,"maximum":100000000,"description":"Votre consommation annuelle (kWh)"},"purchasePrice":{"type":"number","minimum":0,"maximum":100,"description":"Prix d’achat évité (€/kWh)"},"exportPrice":{"type":"number","minimum":0,"maximum":100,"description":"Prix de vente saisi (€/kWh)"}},"required":["kwp","yieldPerKwp","selfConsumptionPercent","annualUseKwh","purchasePrice","exportPrice"],"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 épuisé ; respecter Retry-After"},"503":{"description":"Quota storage temporarily unavailable"}}}},"/api/news":{"get":{"summary":"Résumés des articles publiés","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 nécessite une clé payante","schema":{"type":"string","enum":["site","network"],"default":"site"}}],"security":[{},{"apiKey":[]}],"responses":{"200":{"description":"Résultat JSON publié avec ses sources"},"401":{"description":"Clé invalide ou révoquée"},"429":{"description":"Quota épuisé ; respecter Retry-After"},"503":{"description":"Service public désactivé"}}}},"/api/mcp":{"post":{"summary":"MCP JSON-RPC sans état","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":"Résultat JSON publié avec ses sources"},"401":{"description":"Clé invalide ou révoquée"},"429":{"description":"Quota épuisé ; respecter Retry-After"},"503":{"description":"Service public désactivé"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"Clé API du réseau ; pas un jeton d’administration"}}}}