- API
- Points de terminaison
- /foods/search
Search foods by name
Recherche des aliments comme les saisit un utilisateur de journal alimentaire. Les résultats combinent deux catalogues : des aliments génériques (« banane », « lait entier »), qui correspondent généralement à une entrée de journal, et des produits emballés du catalogue principal de Tuduu. Chaque résultat contient déjà ses macronutriments pour 100 g et sa portion ; l'affichage d'un résultat de recherche ne nécessite donc aucun appel supplémentaire. Les pages contiennent 15 éléments et leur taille n'est pas configurable. Jusqu'à 5 aliments génériques ouvrent la première page lorsque la requête correspond à l'un d'eux ; tout ce qui vient ensuite, sur cette page comme sur toutes les suivantes, provient du catalogue des produits emballés. Pour faire défiler les résultats, renvoie « meta.nextCursor » tel que tu l'as reçu, sans « searchText » : le curseur contient déjà la requête et il est prioritaire si tu envoies les deux. Un « nextCursor » nul signifie qu'il n'y a plus rien. Le défilement s'arrête après les 1 000 premiers produits emballés ; précise davantage la requête pour aller au-delà. La mise en correspondance tolère les accents, le singulier et le pluriel ainsi que les modificateurs supplémentaires : « caffè zuccherato » renvoie du café plutôt qu'une liste vide. Seuls les aliments dont les calories sont connues sont renvoyés ; les résultats emballés sont limités aux catégories comestibles et aux produits qui déclarent une marque, car un produit décrit uniquement par son nom ne peut pas être distingué de ses doublons ; ces produits restent accessibles par leur identifiant. Les résultats emballés qui déclarent une portion apparaissent en premier. Italien uniquement : ce point de terminaison renvoie 406 pour toute autre valeur de Accept-Language, car les noms des aliments génériques n'existent qu'en italien.
Requête
FoodSearchRequest
object
FoodSearchRequest
searchText?
Nom de l’aliment en texte libre à rechercher, tel qu’un utilisateur du journal le saisirait. Obligatoire pour commencer une recherche ; ignoré lorsque « cursor » est également envoyé
cursor?
Jeton opaque renvoyé sous « meta.nextCursor » par un appel précédent, pour récupérer la page suivante. Il contient déjà la requête ; « searchText » n’est donc pas nécessaire et est ignoré lorsque les deux sont envoyés. N’envoie aucun curseur pour commencer une nouvelle recherche