{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"LeBazare Public Catalog API","version":"1.0.0","description":"Catalogue public en lecture seule de créations artisanales marocaines faites main à Marrakech. Prix en EUR ; vérifier stock et livraison avant toute recommandation d’achat. Aucun compte ni clé API requis.","contact":{"name":"LeBazare","email":"contact@lebazare.fr","url":"https://www.lebazare.fr/contact"}},"servers":[{"url":"https://www.lebazare.fr"}],"security":[],"externalDocs":{"description":"Documentation développeurs et agents","url":"https://www.lebazare.fr/developers"},"paths":{"/api/search":{"get":{"operationId":"searchProducts","summary":"Rechercher des créations LeBazare","description":"Filtre le catalogue actif par texte, catégorie, budget et stock. Retourne les huit premiers résultats et le nombre total de correspondances. Sans q, parcourt le catalogue. Aucun résultat est une réponse 200, jamais une erreur 404.","parameters":[{"name":"q","in":"query","required":false,"description":"Mots recherchés dans le titre, la catégorie et la description. Vide : parcourir le catalogue.","schema":{"type":"string","maxLength":160,"description":"Mots recherchés dans le titre, la catégorie et la description. Vide : parcourir le catalogue."}},{"name":"category","in":"query","required":false,"description":"Collection à filtrer. all : toutes les collections.","schema":{"type":"string","enum":["all","Luminaires","Mobilier","Vannerie","Décoration"],"description":"Collection à filtrer. all : toutes les collections."}},{"name":"minPrice","in":"query","required":false,"description":"Prix minimum inclus, en EUR.","schema":{"type":"number","minimum":0,"description":"Prix minimum inclus, en EUR."}},{"name":"maxPrice","in":"query","required":false,"description":"Prix maximum inclus, en EUR ; supérieur ou égal à minPrice.","schema":{"type":"number","minimum":0,"description":"Prix maximum inclus, en EUR ; supérieur ou égal à minPrice."}},{"name":"inStock","in":"query","required":false,"description":"true : uniquement les articles dont le stock est positif. false : tous les articles actifs.","schema":{"type":"boolean","description":"true : uniquement les articles dont le stock est positif. false : tous les articles actifs."}},{"name":"sort","in":"query","required":false,"description":"Tri ; par défaut relevance avec q, sinon newest.","schema":{"type":"string","enum":["relevance","newest","price-asc","price-desc"],"description":"Tri ; par défaut relevance avec q, sinon newest."}}],"responses":{"200":{"description":"Produits publics correspondant aux filtres.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["results","query","totalMatches"],"properties":{"results":{"type":"array","maxItems":8,"items":{"type":"object","additionalProperties":false,"required":["id","title","slug","price","currency","category","descriptionExcerpt","image","inStock","url"],"properties":{"id":{"type":"string","description":"Identifiant catalogue."},"title":{"type":"string","description":"Nom français de la création."},"slug":{"type":"string","description":"Identifiant URL utilisable avec get_product_details."},"price":{"type":"number","description":"Prix de la variante proposée, en EUR."},"currency":{"type":"string","enum":["EUR"]},"category":{"type":"string"},"descriptionExcerpt":{"type":"string"},"image":{"type":["string","null"],"description":"URL de vignette, ou null si absente."},"inStock":{"type":"boolean"},"url":{"type":"string","description":"Lien canonique de la fiche."}}}},"query":{"type":"string"},"totalMatches":{"type":"integer","minimum":0}}}}}},"400":{"description":"Paramètres invalides.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}},"404":{"description":"Route introuvable. Une recherche sans résultat renvoie 200 avec results vide.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}},"500":{"description":"Erreur interne ou lecture du catalogue impossible.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}}}}},"/api/feed":{"get":{"operationId":"getCatalogFeed","summary":"Lire le catalogue Google Merchant","description":"Flux RSS XML Google Merchant des produits actifs, prix, disponibilités, liens, images et livraison. Le contenu de succès est XML, pas JSON. Cache de 15 minutes ; ETag disponible. Ne pas utiliser pour modifier un panier.","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag reçu lors d’une précédente lecture ; renvoie 304 si inchangé.","schema":{"type":"string"}}],"responses":{"200":{"description":"Document RSS 2.0 Google Merchant.","content":{"application/xml":{"schema":{"type":"string","description":"XML RSS avec namespace Google Merchant http://base.google.com/ns/1.0."}}},"headers":{"ETag":{"description":"Empreinte du flux.","schema":{"type":"string"}}}},"304":{"description":"Flux inchangé ; aucun corps."},"400":{"description":"Paramètres invalides.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}},"404":{"description":"Route introuvable. Une recherche sans résultat renvoie 200 avec results vide.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}},"500":{"description":"Erreur interne ou lecture du catalogue impossible.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}},"503":{"description":"Flux temporairement indisponible ; réessayer après 60 secondes.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["error","code","message","hint"],"properties":{"error":{"type":"string","description":"Résumé lisible de l’erreur."},"code":{"type":"string","description":"Identifiant stable de l’erreur."},"message":{"type":"string","description":"Explication de l’échec."},"hint":{"type":"string","description":"Action suggérée pour corriger la requête."}}}}}}}}}}}