Accueil/Docs/API de lecture Market
API de lecture Market
Lisez vos propres données Market depuis un script sur votre serveur : recherche et listes du catalogue, fiches d’extensions, vos suivies, vos recherches enregistrées et le radar de portefeuille, ainsi qu’un export CSV. L’API répond aux mêmes questions que les écrans Market, avec les mêmes limites, pour le compte qui possède la clé.
1. Créez une clé
Dans l’application web, ouvrez Réglages, puis Compte, puis Clés d’API, et créez une clé. La clé complète s’affiche une seule fois, juste après sa création : copiez-la dans votre coffre de secrets. Nous ne gardons que son empreinte SHA-256 : une clé perdue ne se récupère pas, elle se remplace.
Une clé ressemble à ceci :
eop_k3j5x7q2m4n6p_7t2w4y6a3c5e7g2j4l6n3q5s7u2w4y6a3c5e7g2j4l6n3q5s7u2w4y6a
La partie avant le second tiret bas est le préfixe public de la clé. Les réglages l’affichent à côté du nom, de la date de création et de la dernière utilisation, pour distinguer vos clés sans le secret.
2. Appelez l’API
Envoyez la clé comme jeton bearer. Chaque route est un GET sous un même préfixe :
curl -s https://extops.dev/api/v1/market/read/watchlist \
-H "Authorization: Bearer $EXTOPS_API_KEY"
| Route | Ce qu’elle renvoie |
|---|---|
/search | Recherche dans le catalogue avec les paramètres de l’Explorer : texte, mode, filtres, tri, pages. |
/lists/{kind} | L’une des listes de masse : nouvelles, retirées, versions, plus fortes variations et les autres. |
/categories | Catégories du store avec leur taille. |
/extensions/{id} | Une fiche d’extension avec son historique et son activité sur le store. |
/extensions/{id}/timeline | Pages suivantes de l’activité d’une fiche sur le store. |
/watchlist | Les extensions que vous suivez. |
/segments | Vos recherches enregistrées. |
/segments/{id}/members | Les extensions d’une recherche enregistrée, à la date du dernier passage clos du catalogue. |
/portfolio/radar | Tout ce qui a bougé dans vos recherches enregistrées, vos extensions suivies et les vôtres, chaque extension une seule fois. |
/export | Une recherche ou une liste en CSV, jusqu’à 5 000 lignes. |
Les réponses sont le même JSON que lit l’application web, décrit champ par champ dans le fichier OpenAPI. L’API ne fait que lire : il n’y a pas de route d’écriture, et toute méthode autre que GET est refusée.
3. Quelles données voit une clé
Une clé appartient à votre compte et agit en son nom. Vos recherches enregistrées, vos suivies et votre radar ne sont qu’à vous : une recherche enregistrée d’un autre compte répond 404, comme une recherche qui n’existe pas. Les listes du catalogue sont limitées par votre offre, exactement comme à l’écran.
4. Limites
- 120 requêtes par minute et par compte, cumulées sur toutes ses clés : une deuxième clé n’est pas un deuxième quota. Chaque réponse porte
X-RateLimit-Limit,X-RateLimit-RemainingetX-RateLimit-Reset. - Vos appels comptent aussi dans le même budget quotidien Market que l’application : une clé, c’est vous, pas un second quota.
- Export CSV : jusqu’à 5 000 lignes par fichier et 50 fichiers par jour et par compte.
- Jusqu’à 5 clés actives par compte, assez pour remplacer une clé sans interruption.
Au-delà d’une limite, l’API répond 429 avec Retry-After et l’heure de réinitialisation dans details.reset_at.
5. Remplacement, révocation et changement d’offre
Remplacer émet une nouvelle clé et arrête aussitôt l’ancienne. Pour remplacer sans interruption, créez une seconde clé, déployez-la, puis révoquez la première. La révocation est possible sur toutes les offres.
L’API fait partie de l’offre Fleet. Si l’offre change, vos clés ne sont pas supprimées : les appels répondent 403 avec plan_required, les réglages affichent les clés comme suspendues, et les mêmes clés fonctionnent de nouveau quand vous revenez à Fleet.
6. Erreurs
| Statut | Code | Signification |
|---|---|---|
| 401 | api_key_invalid | Aucune clé, ou une clé inconnue ou mal formée. |
| 401 | api_key_revoked | La clé a été révoquée ou remplacée. |
| 403 | api_key_scope | La portée de la clé ne couvre pas cette route. |
| 403 | plan_required | Votre offre n’inclut pas l’API pour le moment. |
| 429 | rate_limited | Une limite est épuisée jusqu’à l’heure indiquée dans details.reset_at. |