{"openapi":"3.1.0","info":{"title":"Repère Camping 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://reperecamping.fr"}],"x-language":"fr","x-mcp-tools":["latest_news","get_article","calculate_camping-budget","calculate_camping"],"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":"camping-budget"},"inputs":{"type":"object","properties":{"nights":{"type":"integer","minimum":0,"maximum":366,"description":"Nuits"},"pitchPerNight":{"type":"number","minimum":0,"maximum":100000,"description":"Emplacement par nuit (€)"},"travelers":{"type":"integer","minimum":1,"maximum":100,"description":"Personnes"},"personPerNight":{"type":"number","minimum":0,"maximum":10000,"description":"Supplément par personne/nuit (€)"},"kilometers":{"type":"number","minimum":0,"maximum":1000000,"description":"Trajet total (km)"},"litersPer100Km":{"type":"number","minimum":0,"maximum":100,"description":"Votre consommation (l/100 km)"},"fuelPrice":{"type":"number","minimum":0,"maximum":100,"description":"Prix du carburant (€/l)"},"extrasTotal":{"type":"number","minimum":0,"maximum":10000000,"description":"Autres dépenses totales (€)"}},"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":"Objectif personnel de poids (kg, facultatif)"},"items":{"type":"array","minItems":1,"maxItems":100,"description":"Jusqu’à 100 éléments ; poids unitaire en grammes et quantité de 1 à 1 000.","items":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"description":"Désignation facultative"},"weightGrams":{"type":"number","minimum":0,"maximum":1000000,"description":"Poids unitaire en grammes"},"quantity":{"type":"integer","minimum":1,"maximum":1000,"description":"Quantité"}},"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 é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"}}}}