{"openapi":"3.1.0","info":{"title":"Limen","version":"0.4.0","description":"Traiteurs et lieux de réception de Lyon au Beaujolais : recherche, prix calculés, disponibilités, confiance et demandes de devis vérifiées. Gratuit pendant le lancement, sans clé."},"servers":[{"url":"https://limen-relais.limen-partenaires.workers.dev"}],"paths":{"/api/search":{"get":{"operationId":"searchBusinesses","summary":"Chercher des entreprises par métier, lieu, date, quantité et budget","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Métier ou besoin : traiteur, lieu de réception, wedding caterer…"},{"name":"lat","in":"query","required":false,"schema":{"type":"number"},"description":"Latitude du lieu de l'événement"},{"name":"lng","in":"query","required":false,"schema":{"type":"number"},"description":"Longitude du lieu de l'événement"},{"name":"location","in":"query","required":false,"schema":{"type":"string"},"description":"Commune, si les coordonnées sont inconnues"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Date AAAA-MM-JJ"},{"name":"quantity","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'invités adultes"},{"name":"budget","in":"query","required":false,"schema":{"type":"number"},"description":"Budget total maximum en euros"},{"name":"duree_heures","in":"query","required":false,"schema":{"type":"number"},"description":"Durée en heures, pour les offres à l'heure"},{"name":"nb_personnes_servies","in":"query","required":false,"schema":{"type":"number"},"description":"Personnes servies (coiffure, maquillage)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"description":"1 à 10"}],"responses":{"200":{"description":"Résultats classés par compatibilité, pertinence et confiance","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/offres":{"get":{"operationId":"searchOffers","summary":"Chercher des offres précises (contenu, prix calculé, conditions) plutôt que des entreprises","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Le besoin en texte libre : buffet campagnard mariage, cocktail dînatoire…"},{"name":"metier","in":"query","required":false,"schema":{"type":"string"},"description":"Métier : traiteur, lieu de réception…"},{"name":"invites","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'invités adultes"},{"name":"budget","in":"query","required":false,"schema":{"type":"number"},"description":"Budget total maximum en euros"},{"name":"budget_pp","in":"query","required":false,"schema":{"type":"number"},"description":"Budget maximum par personne en euros"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Date AAAA-MM-JJ : prix et disponibilité à cette date"},{"name":"lat","in":"query","required":false,"schema":{"type":"number"},"description":"Latitude du lieu de l'événement"},{"name":"lng","in":"query","required":false,"schema":{"type":"number"},"description":"Longitude du lieu de l'événement"},{"name":"location","in":"query","required":false,"schema":{"type":"string"},"description":"Commune, si les coordonnées sont inconnues"},{"name":"radius_km","in":"query","required":false,"schema":{"type":"number"},"description":"Rayon en km, 30 par défaut"},{"name":"regimes","in":"query","required":false,"schema":{"type":"string"},"description":"Régimes à couvrir, séparés par des virgules : vegetarien (V), vegan (VG), sans_gluten (SG)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer"},"description":"1 à 20, 8 par défaut"}],"responses":{"200":{"description":"Offres classées (compatibilité, prix confirmé, adéquation, prix connu, fraîcheur, confiance ; jamais un critère payant), chacune avec son prix total calculé, sa disponibilité, son entreprise et le lien de sa page /o/<business_id>/<slug>","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/quote":{"get":{"operationId":"getQuoteEstimate","summary":"Estimer le prix d'une offre","parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string"},"description":"Identifiant Limen"},{"name":"offer_id","in":"query","required":true,"schema":{"type":"string"},"description":"Identifiant de l'offre"},{"name":"quantity","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'invités adultes"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"Date AAAA-MM-JJ : le tarif valable ce jour-là"},{"name":"enfants","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'enfants"},{"name":"intervenants","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'intervenants à nourrir"},{"name":"options","in":"query","required":false,"schema":{"type":"string"},"description":"Identifiants d'options, séparés par des virgules"},{"name":"duree_heures","in":"query","required":false,"schema":{"type":"number"},"description":"Durée en heures"},{"name":"nb_personnes_servies","in":"query","required":false,"schema":{"type":"number"},"description":"Personnes servies (coiffure, maquillage)"},{"name":"budget","in":"query","required":false,"schema":{"type":"number"},"description":"Budget annoncé, pour les offres au pourcentage"}],"responses":{"200":{"description":"Estimation détaillée, ligne par ligne","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/availability":{"get":{"operationId":"checkAvailability","summary":"Vérifier une date selon les règles déclarées","parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string"},"description":"Identifiant Limen"},{"name":"date","in":"query","required":true,"schema":{"type":"string"},"description":"Date AAAA-MM-JJ"},{"name":"quantity","in":"query","required":false,"schema":{"type":"number"},"description":"Nombre d'invités ou d'unités"}],"responses":{"200":{"description":"Statut et raisons","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/trust":{"get":{"operationId":"getTrustSignals","summary":"Signaux de confiance d'une entreprise","parameters":[{"name":"business_id","in":"query","required":true,"schema":{"type":"string"},"description":"Identifiant Limen"}],"responses":{"200":{"description":"Avis vérifiés, notes publiques, recommandations, score","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/demande":{"post":{"operationId":"submitQuoteRequest","summary":"Envoyer une demande de devis vérifiée à une entreprise","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["business_id","offer_id","date","client_contact"],"properties":{"business_id":{"type":"string"},"offer_id":{"type":"string"},"date":{"type":"string"},"quantity":{"type":"number"},"enfants":{"type":"number"},"intervenants":{"type":"number"},"options":{"type":"array","items":{"type":"string"}},"duree_heures":{"type":"number"},"heures_supplementaires":{"type":"number"},"nb_personnes_servies":{"type":"number"},"budget":{"type":"number"},"client_name":{"type":"string"},"client_contact":{"type":"string"},"notes":{"type":"string"}}}}}},"responses":{"200":{"description":"Demande enregistrée avec sa référence, ou liste des corrections à faire","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}