Vue lecture

Gestion des API : le sourcing multiple est devenu standard

Pour la gestion des API, la tendance est à l’approvisionnement auprès de plusieurs fournisseurs.

Gartner avait fait la remarque l’an dernier dans le Magic Quadrant consacré à ce marché. Il va plus loin cette année : le sourcing multiple est devenu standard… en contrepartie d’un risque de fragmentation que peuvent toutefois atténuer les architectures fédérées.

Un autre mouvement s’est confirmé : une part croissante des utilisateurs de solutions de gestion des API sont des développeurs. Les stratégies marketing ont évolué en conséquence. Mais des offreurs gardent un déficit de visibilité auprès de ce public. Y compris quelques-uns de ceux que Gartner classe comme « leaders ». En l’occurrence, Axway, Boomi et, dans une certaine mesure, IBM.

17 fournisseurs, 7 « leaders »

En 2024, Boomi faisait partie des « acteurs de niche ». En un an, il a nettement progressé, tant en « exécution » (capacité à répondre effectivement à la demande du marché) qu’en « vision » (stratégies : sectorielle, géographique, commerciale, marketing, produit…). Axway et IBM étaient quant à eux déjà « leaders ». Même chose pour Google Cloud, Gravitee, Kong et Salesforce. On ne peut pas en dire autant de SmartBear, qui a rétrogradé chez les « visionnaires ».

Sur l’axe « exécution », la situation est la suivante :

Rang Fournisseur Évolution annuelle
1 Google =
2 IBM =
3 Salesforce + 2
4 Kong + 5
5 Boomi + 8
6 Axway – 3
7 Gravitee + 3
8 WSO2 + 6
9 Microsoft – 5
10 SAP – 3
11 AWS – 5
12 Sensedia + 5
13 SmartBear – 2
14 Tyk – 6
15 Workato nouvel entrant
16 Postman – 1
17 Solo.io – 1

Sur l’axe « vision » :

Rang Fournisseur Évolution annuelle
1 Kong =
2 Boomi + 12
3 Gravitee + 3
4 Salesforce + 3
5 IBM – 1
6 Google – 4
7 Tyk + 4
8 Postman – 5
9 Axway – 4
10 SmartBear – 2
11 Microsoft + 1
12 Workato nouvel entrant
13 SAP =
14 WSO2 – 5
15 Sensedia =
16 Solo.io – 6
17 AWS =

Axway : avec le chantier iPaaS, moins d’agilité sur l’IA

Comme l’an dernier, Axway se distingue sur la gestion fédérée des API. Gartner salue de plus le lancement récent d’une brique iPaaS. Il apprécie aussi la manière dont les partenariats (Stoplight, Ping, Graylog, Traceable…) viennent renforcer le modèle économique, au même titre que les acquisitions (en particulier celle de Sopra Banking Software, dont la fusion avec Axway a donné 74Software). Bon point également pour la capacité d’internationalisation, entre documentation multilingue et UI localisées.

Également comme l’an dernier, la notoriété auprès des développeurs reste limitée. Axway est par ailleurs plus lent que la concurrence pour livrer des fonctionnalités IA « avancées » (le focus sur l’iPaaS l’explique en partie, comme la restructuration de sa stack autour de la notion d’événements). Gartner relève, en parallèle, une croissance des ventes bien inférieure à la moyenne du marché.

Boomi manque d’accroche auprès des développeurs

L’année écoulée aura marqué un tournant dans la vision de la gestion des API chez Boomi, de sorte que ce dernier dépend désormais moins du seul iPaaS pour se différencier.  L’acquisition d’APIIDA et de TIBCO Mashery a accompagné la refonte de l’offre, assortie d’une feuille de route que Gartner salue. Dans le même temps, la présence commerciale de Boomi s’est étendue, tant du point de vue géographique qu’au travers du renforcement de partenariats (ServiceNow et AWS en particulier).

Sur la gestion des API, Boomi reste, relativement aux autres « leaders », un petit acteur en termes de revenus et de part de marché. Il n’a pas non plus la même empreinte auprès des développeurs (son marketing reste perçu comme axé sur les métiers et les décideurs IT). Vigilance également quant à l’intégration avec les passerelles tierces : elle peut s’avérer complexe.

Apigee « généreusement » poussé comme complément à GCP

Google Cloud se distingue sur le volet innovation, entre autres parce qu’il a greffé à Apigee de quoi favoriser la conception d’API par des agents (avec prise en charge des protocoles A2A et MCP). Gartner apprécie aussi les possibilités offerts en matière de monétisation du trafic IA et de détection des usages abusifs. Il y ajoute la stabilité du produit et sa capacité à remplir les cas d’usage les plus complexes… sous réserve de disposer de l’expertise adéquate.

Google Cloud continue néanmoins à positionner ses produits comme des compléments à GCP plutôt que comme des solutions autonomes. Des clients signalent, de surcroît, qu’on les incite à migrer. Le produit en lui-même est relativement complexe à exploiter. Et malgré des changements positifs sur la tarification, des clients de longue date expriment leur inquiétude quant au rapport coût/bénéfices.

Gravitee n’a toujours pas sectorialisé son offre

Outre un déploiement flexible, Gravitee a pour lui l’indépendance vis-à-vis de tout cloud, progiciel ou iPaaS. Gartner souligne qu’il a su rapidement proposer une passerelle IA gérant le protocole MCP (et destinée à s’ouvrir aux maillages agentiques). Bon point également pour la performance commerciale (CA déclaré en croissance de 70 % sur un an), doublée d’une tarification simple.

Par rapport aux autres « leaders », Gravitee manque de notoriété. Il n’a toujours pas « verticalisé » son approche. Et sa clientèle reste largement concentrée en Europe (les acheteurs sur d’autres plaques géographiques se poseront la question du service et du support).

IBM, peu pris en considération hors de son écosystème

IBM est crédité d’un bon point pour la couverture fonctionnelle de son offre. Il l’est aussi pour la flexibilité de déploiement et la livraison de fonctionnalités axées IA (gestion des prompts, routage LLM). Gartner salue également la diversité de sa clientèle (tailles, régions, secteurs) ainsi que de son réseau commercial et de support.

L’acquisition de webMethods a produit un doublon au catalogue (voire plus si on considère que Red Hat a sa propre offre de gestion d’API), qui demeure en l’état même si IBM a promis une convergence. Big Blue a par ailleurs tendance à toucher essentiellement les organisations qui sont ses clients sur d’autres segments (il est peu évalué sinon). Et sur l’année écoulée, ses ventes ont connu une croissance sous la moyenne du marché.

Kong : une tarification qui peut prêter à confusion

Kong se distingue par les fonctionnalités AI-driven qu’il a livrées dernièrement (génération d’API, de spécifications et de serveurs MCP). Il parvient par ailleurs à conserver une forte visibilité, à renfort d’événements, de partenariats et de présence sur les principales marketplaces. Gartner salue aussi le lancement des Serverless Gateways (passerelles « légères » sans serveur) et de l’Event Gateway (qui permet de gérer des flux Kafka), intégrée avec son maillage de services.

Comme chez Gravitee, pas de solutions sectorielles au catalogue. Attention aussi à la courbe d’apprentissage que supposent les solutions Kong, en plus de la confusion que peuvent susciter la tarification basée sur les services et les frais supplémentaires pour des éléments comme les portails, les tests et l’analytics. Gartner y ajoute une présence limitée en Amérique du Sud, au Moyen-Orient et en Afrique comparé aux autres « leaders ».

Salesforce reste un des fournisseurs les plus chers

En complément à la présence commerciale et au réseau de partenaires, Gartner note que Salesforce a réussi à s’étendre sur le segment SMB (small and medium business, entreprises de moins de 1000 employés), qui représente 30 % du business de MuleSoft. L’intégration avec le reste de son offre a contribué à attirer une grosse base de clientèle. Salesforce jouit globalement d’une grande notoriété de marque, y compris auprès des développeurs.

En plus de rester l’un des fournisseurs les plus chers, MuleSoft présente une structure de prix complexe susceptible d’entraîner des coûts imprévus. Il est par ailleurs perçu comme plus réactif qu’innovant, en particulier pour ce qui touche à l’IA. Et les capacités restent limitées sur la monétisation comme le test d’API, ainsi que la fédération de passerelles.

Illustration © Murrstock – Adobe Stock

The post Gestion des API : le sourcing multiple est devenu standard appeared first on Silicon.fr.

  •  

API Abilities - Le langage universel de Wordpress pour unifier les composants IA

Vous avez un site WordPress et vous voulez ajouter de l’IA dedans ?

Alors pour faire ça, vous installez un super plugin qui utilise ChatGPT. Parfait ! Sauf que 2 mois après, vous découvrez l’existence d’un nouvelle version de Claude qui est bien meilleure. Ou Gemini sort une fonctionnalité que vous voulez absolument..

Mais bon, votre plugin est marié avec OpenAI, et impossible de divorcer. Du coup, vous êtes coincé. Bienvenue dans le grand bordel de l’IA, où chaque outil parle sa propre langue et refuse de discuter avec les autres.

Heureusement, WordPress vient de sortir un truc qui pourrait bien changer tout ça. En gros, ils ont créé trois outils qui fonctionnent ensemble pour transformer WordPress en “traducteur universel” pour les IA. Ça s’appelle l’Abilities API, le PHP AI Client SDK, et le support du MCP (Model Context Protocol).

D’après l’annonce officielle sur Make WordPress , l’idée c’est donc de créer un registre central où toutes les capacités de WordPress sont décrites de manière lisible par les machines. Jonathan Bossenger explique que l’Abilities API ne se limite pas à découvrir les capacités du site, mais gère aussi les permissions et l’exécution de manière sécurisée. Votre site peut dire à une IA “Voilà ce que je sais faire, voilà ce que tu peux toucher, et voilà comment tu exécutes ça”.

// N'importe quel plugin peut enregistrer ses capacités avec le hook `init`.
wp_register_ability( 'my-seo-plugin/analyze-content-seo', [
 'label' => __( 'Analyser le SEO du contenu', 'my-seo-plugin' ),
 'description' => __( 'Analyse le contenu de l\'article pour améliorer le SEO.', 'my-seo-plugin' ),
 'thinking_message' => __( 'Analyse de votre contenu en cours !', 'my-seo-plugin' ),
 'success_message' => __( 'Contenu analysé avec succès.', 'my-seo-plugin' ),
 'execute_callback' => [ 'MySEOPlugin', 'analyze_content' ],
 'input_schema' => [
 'type' => 'object',
 'properties' => [
 'post_id' => [
 'type' => 'integer',
 'description' => __( 'L\'identifiant de l\'article.', 'my-seo-plugin' ),
 'required' => true
 ],
 ],
 'additional_properties' => false,
 ],
 'output_schema' => [
 'type' => 'number',
 'description' => __( 'Le score du contenu en pourcentage.', 'my-seo-plugin' ),
 'required' => true,
 ],
 'permission_callback' => 'edit_posts',
] );

Le truc marrant, c’est que WordPress a la réputation d’être la technologie “has-been” du web. Les hipsters du dev vous disent que c’est un dinosaure, qu’il faut passer à Next.js ou je ne sais quoi, et pourtant, c’est ce dino qui devient le premier CMS à adopter le MCP, qui est quand même un standard ultra-récent. Si vous n’avez jamais entendu parlé de MCP, c’est développé par Anthropic et ça permet de standardiser la façon dont les IA communiquent avec les outils externes.

WordPress a intégré le MCP en quelques mois et je vous explique rapidmeent comment ça marche, parce que c’est pas si compliqué. Le PHP AI Client SDK v0.1.0 est en fait une interface unifiée pour parler à n’importe quelle IA. Vous écrivez votre code une fois, et ça fonctionne avec OpenAI, Claude, Gemini, ou même un modèle local que vous faites tourner chez vous. Ce SDK se charge donc de traduire vos requêtes dans le langage de chaque provider.

C’est donc surtout un truc pour les développeurs, les agences, les gens qui codent des plugins et des thèmes custom. Et si vous êtes un utilisateur lambda de Wordpress (qui ne code pas dans cet écosystème), sachez quand même que les plugins et thèmes que vous utiliserez demain seront construits là-dessus.

Donc indirectement, ça va influencer votre expérience car vous aurez des plugins qui vous laisseront choisir votre fournisseur de LLM IA dans les réglages. Par exemple, un plugin de rédaction pourra utiliser Claude pour le style, GPT-4 pour la structure, et Gemini pour la recherche d’images, tout en même temps si vous le souhaitez… Ce sera un peu comme le Bluetooth ou l’électricité : vous ne savez pas vraiment comment ça marche, mais vous l’utiliserez tous les jours sans y penser.

Ce SDK est déjà disponible via Composer pour les devs qui veulent tester et WordPress 6.9 intégrera l’Abilities API directement dans son core. Après ça, on devrait donc voir une explosion de plugins qui utiliseront plusieurs IA simultanément.

Après si vous n’utilisez pas Wordpress, rassurez-vous, c’est pas juste une feature de chez eux… C’est un standard qui pourra être adopté également par d’autres CMS. Un peu comme RSS à l’époque qui a commencé dans un coin, puis que tout le monde a adopté parce que c’était ouvert et pratique. Et bien là, c’est pareil, l’Abilities API et le MCP sont open source donc n’importe qui peut les implémenter dans ses outils.

A voir maintenant comment les projets concurrents vont réagir… Wix va-t-il continuer à pousser son intégration exclusive avec ChatGPT ? Shopify va-t-il ouvrir son API IA ? Ou est-ce qu’ils vont tous regarder WordPress prendre une longueur d’avance et se dire “Merde, on a peut-être loupé un truc” ?

Bref, moi je trouve ça cool car WordPress aurait pu faire comme les autres, c’est à dire un beau partenariat exclusif avec OpenAI, un joli chèque, et enfermer 43% du web dans un écosystème propriétaire… Mais au lieu de ça, ils ont créé un standard ouvert et gratuit comme ça, c’est la communauté qui décide.

Et ça c’est beau ! Donc si vous êtes dev et que vous voulez tester, le repo GitHub du PHP AI Client est dispo ici avec toute la doc. Et si vous êtes juste utilisateur curieux, gardez un œil sur les plugins qui sortiront après WordPress 6.9 car ça va devenir intéressant…

  •  

L'API qui manquait à Ollama pour concurrencer ChatGPT est enfin là !!

Ce qui est super relou avec les IA qu’on peut utiliser en local, genre avec Ollama, c’est que si on lui demande des infos un peu trop récente, ça nous sort des vieux chiffres de 2023 avec la confiance d’un vendeur de voitures d’occasion. Bon bah ça, c’est fini puisqu’ Ollama vient de sortir une API de recherche web qui permet enfin à vos modèles locaux d’accéder à des infos fraîches dispo sur le net.

Woohoo \o/ !

Baptisée Ollama Web Search, cette API REST permet donc à vos modèles de faire des recherches sur le web en temps réel comme ça plus besoin de se contenter des données d’entraînement figées dans le temps. Selon la doc officielle , l’API fournit “les dernières informations du web pour réduire les hallucinations et améliorer la précision”. En gros, votre IA locale devient aussi à jour que ChatGPT, mais sans envoyer vos données perso à OpenAI.

Les modèles compatibles avec cette nouvelle fonctionnalité incluent qwen3, LLama, gpt-oss (la version open source d’OpenAI), deepseek-v3.1, et plein d’autres. Et d’après les premiers tests de la communauté , qwen3 et gpt-oss sont même plutôt doués pour exploiter cette fonctionnalité. Le modèle comprend qu’il lui manque une info, fait sa recherche, analyse les résultats et nous sort une réponse documentée !

C’est trop incrrrr ! Vous allez pouvoir booster vos scripts / bots / outils d’IA locale pour qu’ils puissent surveiller des choses dispo en ligne, les comparer, générer des résumés à partir de sites web, fact checker ou compléter des infos…etc.

Mais alors comment s’en servir ? Bon, on est vendredi soir et j’ai la flemme de tourner un tuto vidéo, donc même si je risque de détailler tout ça bientôt à mes Patreons d’amour , voici quand même quelques explications.

D’abord, il faut créer une clé API Ollama . La doc explique que vous avez un essai gratuit généreux pour commencer, mais s’il vous en faut plus, il faudra prendre un petit abonnement Ollama Cloud

Une fois votre clé en poche, exportez-la dans votre environnement comme ceci :

export OLLAMA_API_KEY="votre_clé_ici"

Le plus simple ensuite pour tester, c’est avec curl :

curl https://ollama.com/api/web_search \ --header "Authorization: Bearer $OLLAMA_API_KEY" \ -d '{ "query": "dernières vulnérabilités CVE janvier 2025" }'

Mais bon, soyons honnêtes, on va plutôt utiliser Python car c’est quand même plus cool ;-) . Voici donc un exemple de script basique qui compare une réponse avec et sans recherche web :

import ollama
from ollama import chat, web_search, web_fetch

model = "qwen3:4b"

# 1. Sans recherche web
response_classic = chat( # pas ollama.chat
 model=model,
 messages=[{
 "role": "user",
 "content": "Quelles sont les features de React 19?"
 }]
)
print("Sans recherche web:", response_classic.message.content[:500]) # .message.content

# 2. Avec recherche web
search_results = web_search("React 19 features dernières nouveautés")
print("Résultats:", search_results)

# 3. Avec outils
available_tools = {'web_search': web_search, 'web_fetch': web_fetch}
messages = [{
 "role": "user",
 "content": "Utilise la recherche web pour me dire les dernières features de React 19"
}]

response_with_tools = chat(
 model=model,
 messages=messages,
 tools=[web_search, web_fetch],
 think=True
)

# Accès aux tool_calls
if response_with_tools.message.tool_calls:
 for tool_call in response_with_tools.message.tool_calls:
 function_to_call = available_tools.get(tool_call.function.name)
 if function_to_call:
 args = tool_call.function.arguments
 result = function_to_call(**args)
 print(f"Outil utilisé: {tool_call.function.name}")
 print(f"Résultat: {str(result)[:500]}...")

print("Réponse finale:", response_with_tools.message.content)

Les performances varient ensuite selon les modèles. Qwen3:4b est parfait pour du temps réel avec environ 85 tokens/seconde. GPT-OSS:120b est plus lent mais donne des résultats de qualité idéaux pour de la production. Pour du dev local, je vous recommande qwen3:8b, c’est le bon compromis entre vitesse et intelligence.

Le truc cool, c’est que vous pouvez maintenant créer des agents spécialisés. Genre un agent DevOps qui surveille les CVE de vos dépendances, un agent Marketing qui analyse les tendances de votre secteur, ou un agent Support qui maintient une base de connaissances à jour.

Voici un exemple :

import ollama
from ollama import chat, web_search

class SecurityAgent:
 def __init__(self):
 self.model = "qwen3:4b"

 def check_vulnerabilities(self, technologies):
 rapport = "🛡️ RAPPORT SÉCURITÉ\n\n"

 for tech in technologies:
 # Recherche directe des CVE récentes
 results = web_search(f"{tech} CVE vulnerabilities 2025 critical")

 # Demande au modèle d'analyser
 response = chat(
 model=self.model,
 messages=[{
 "role": "user",
 "content": f"Résume les vulnérabilités critiques de {tech}: {results}"
 }]
 )

 rapport += f"### {tech}\n{response.message.content}\n\n"

 return rapport

# Utilisation
agent = SecurityAgent()
rapport = agent.check_vulnerabilities(["Node.js", "PostgreSQL", "Docker"])
print(rapport)

Maintenant, pour optimiser un peu tout ça et ne pas flamber votre quota API, voici quelques astuces assez classiques… D’abord, mettez en cache les résultats. Ensuite, soyez spécifique dans vos requêtes. Par exemple “React hooks” va chercher plein de trucs inutiles, alors que “React 19 nouveaux hooks useActionState” sera plus efficace.

On peut vraiment réduire la quantité de requêtes en étant malin sur le prompt engineering. Par exemple, au lieu de laisser le modèle chercher tout seul, guidez-le : “Vérifie uniquement sur la doc officielle de React” plutôt que “Cherche des infos sur React”.

Et comme Ollama supporte MCP Server, Cline, Codex et Goose, c’est royal car vous pouvez aussi brancher votre assistant IA directement dans votre IDE, Slack, ou Discord. Hé oui, vous allez enfin pouvoir coder un bot Discord qui va fact-checker automatiquement les affirmations douteuses et foireuses de vos collègues. Le rêve !

Pour aller plus loin, vous pouvez aussi combiner la recherche web avec le fetching de pages spécifiques. L’API web_fetch permet ainsi de récupérer le contenu d’une URL précise. Pratique pour analyser en profondeur une doc ou un article :

from ollama import web_search, web_fetch, chat

# 1. Recherche d'articles pertinents
search_results = web_search("React 19 vs Vue 3 comparison 2025")
top_url = search_results.results[0]['url'] # ou .url selon le type
print(f"📰 Article trouvé: {search_results.results[0]['title']}")

# 2. Récupération du contenu complet de la page
page_content = web_fetch(top_url)
print(f"📄 {len(page_content.content)} caractères récupérés")

# 3. Analyse approfondie du contenu
response = chat(
 model="qwen3:4b", # ou "gpt-oss" si disponible
 messages=[{
 "role": "user",
 "content": f"""
 Analyse cette comparaison technique:
 {page_content.content[:4000]}

 Donne-moi:
 1. Les points clés de chaque framework
 2. Le gagnant selon l'article
 3. Les cas d'usage recommandés
 """
 }]
)

print(f"\n🔍 Analyse:\n{response.message.content}")

Alors bien sûr, des fois la recherche retournera des trucs pas pertinents, surtout si votre requête est vague et de son côté, le modèle peut aussi mal interpréter les résultats s’il est trop petit. Mais bon, comparé à une IA qui vous sort que Windows 11 n’existe pas encore, on a fait quand même pas mal de chemin, vous ne trouvez pas ??

J’espère qu’à terme, Ollama ajoutera aussi le support de sources personnalisées car ce serait vraiment cool de pouvoir indexer par exemple sa propre doc ou ses propres emails pour y faire des recherches… Mais bon, en attendant cette nouvelle API permet enfin de contrebalancer ce problème des modèles pas à jour en terme de connaissances, et ça c’est déjà énorme !

A vous de jouer maintenant !

Source

  •  

Beacon API

Je ne connaissais pas cette API des navigateurs qui permet d'envoyer une requête POST vers un serveur au moment où un onglet est fermé. La particularité est que la requête est gérée de manière asynchrone donc pas besoin d'attendre la réponse du serveur pour laisser l'onglet se fermer. C'est utilisé principalement pour tout ce qui est analytics mais j'entrevois d'autres cas d'utilisation.


Permalink
  •  

Beacon API

Je ne connaissais pas cette API des navigateurs qui permet d'envoyer une requête POST vers un serveur au moment où un onglet est fermé. La particularité est que la requête est gérée de manière asynchrone donc pas besoin d'attendre la réponse du serveur pour laisser l'onglet se fermer. C'est utilisé principalement pour tout ce qui est analytics mais j'entrevois d'autres cas d'utilisation.


Permalink
  •  

Ajouter Ygg-API à Prowlarr


Prowlarr permet de mixer plusieurs indexeurs (BitTorrent/Usenet) pour faire des recherches et téléchargements.
Il existe des indexeurs pour YGGtorrent mais ils sont souvent dans les choux du fait de la protection CloudFlare du site. Certes on trouve des outils annexes pour tenter de passer outre mais sinon on peut faire plus simple avec ygg-api (yggapi.eu dont le code n’est pas publié pour ne pas être contré).

Merci à Clemv95 pour le fichier de configuration. Je le poste aussi sur mon blog au cas où.



EDIT du 25.07.25 : Glira fait une remarque qu’il semble bon de transmettre aux néophytes ou à ceux pour qui YGG est quasi leur unique source. Je suppose cependant que la personne derrière ce site n’a absolument pas besoin de nos passkeys pour ce site où il est si facile de se faire un compte et du ratio (sans Joal), tout comme je présume qu’elle est sur les trackers privés francophones…


Attention ce pendant, cette solution envoie votre passkey sur le serveur de yggapi.eu. Et il est extrêmement facile pour lui de les enregistrer. Utilisez ce service que si vous êtes prêt à perdre votre compte ygg en cas d’exploitation de votre passkey.
Ou renseignez une fausse passkey, et modifiez le fichier torrent après téléchargement.



Dans l’installation de Prowlarr, aller dans le dossier Definitions et créer le dossier Custom.

2025 07 12 19 27 55 homebox Ásbrú connection manager (ubuntu)

Puis créer/mettre dedans le fichier ygg-api.yml et relancer Prowlarr. Ygg-API est maintenant disponible dans la liste des indexeurs.

2025 07 12 19 29 47 indexers prowlarr — mozilla firefox

Pour le configurer, il suffira d’ajouter une passkey. Trouvable sur son compte YGG ou dans l’URL d’annonce du tracker si vous avez déjà des .torrents de chargés.



Loading

  •