/auctions et /events de Topsort ou des API, classées par code d’état HTTP :
4xx : Problème de requête
5xx : Problème de service Topsort
Les deux types d’erreurs renvoient des tableaux JSON contenant des objets d’erreur avec les champs : errCode, docUrl et un message optionnel.
| Champ | Type | Description |
|---|---|---|
| errCode | string | Une chaîne courte identifiant de manière unique le problème. |
| docUrl | string | Un lien vers cette documentation fournissant plus d’informations sur l’erreur. |
| message | string | Optionnel. Si présent, explication lisible ou détails sur l’erreur. La chaîne pour une erreur donnée peut changer au fil du temps ; le code ne doit pas analyser ou distribuer en fonction de valeurs particulières pour ce champ. |
| Code | Description | Détails | ||
|---|---|---|---|---|
| 400 | Mauvaise requête | Requête inacceptable, c’est-à-dire formatage incorrect | ||
| 403 | Interdit/Non autorisé | Problème de clé API ou jetons manquants | ||
| 404 | Non trouvé | Le serveur ne peut pas trouver la ressource demandée. Soit l’URL de la requête n’est pas sur nos routes, soit la ressource n’est pas disponible (c’est-à-dire que la campagne demandée n’existe pas) | ||
| 422 | Entité non traitable | Corps de requête et modèle ne correspondent pas, c’est-à-dire qu’il vous manque une propriété, ou l’API attend une date mais a reçu un nombre | ||
| 429 | Limite de taux dépassée | Limite de taux basée sur l’IP atteinte. Cette erreur est accompagnée des en-têtes suivants : - X-RateLimit-Limit : nombre total de requêtes autorisées pour la période - X-RateLimit-Remaining : nombre de requêtes restantes pour la période - X-RateLimit-Reset : quand vous pourrez effectuer une autre requête |
Codes d’erreur
| Code d’erreur | Description |
|---|---|
| bad_request | La requête n’a pas pu être analysée ; vérifiez la spécification OpenAPI pour le schéma correct. |
| empty_request | La requête est vide ; vérifiez la spécification OpenAPI pour le schéma correct. |
| internal_server_error | Problème de serveur inattendu ; notre équipe résout généralement ces problèmes rapidement. |
| invalid_api_key | Clé API manquante, invalide ou expirée ; voir authentification pour plus de détails. |
| invalid_auction_id | L’ID d’enchère ne correspond pas à une enchère ; assurez-vous qu’un ID d’enchère valide est transmis dans la requête. |
| invalid_event_type | Le type d’événement doit être “Impression”, “Click” ou “Purchase”. |
| invalid_promotion_type | Types de promotion invalides dans le champ slots. |
| invalid_session | L’objet session doit contenir un sessionId non vide. |
| missing_aspect_ratio | Le ratio d’aspect requis pour les bannières publicitaires est manquant. |
| missing_auctions | Au moins une enchère doit être spécifiée. |
| missing_context | Contexte requis manquant ; spécifiez une catégorie, une liste de produits ou une requête de recherche. |
| missing_placement | Le champ placement ou placement.page requis est manquant. |
| missing_product_id | productId manquant. |
| missing_promotion_type | Une enchère doit demander des emplacements pour au moins un type de promotion. |
| missing_purchased_at | Le champ purchasedAt requis est manquant. |
| missing_session | Le champ session requis est manquant. |
| missing_slots | Le champ slots requis est manquant. |
| no_products | Au moins un produit doit être spécifié. |
| no_purchase_items | Au moins un article doit être acheté. |
| purchase_item_quantity_less_or_equal_than_zero | Un article acheté a une quantité inférieure ou égale à zéro. |
| resolved_bid_id_not_found | L’ID d’offre résolu fourni ne correspond pas à un enregistrement interne. |
| too_few_impressions | Au moins une impression doit être incluse. |
| too_few_slots | Au moins un emplacement doit être spécifié dans une enchère. |
| too_many_auctions | Maximum de 5 enchères peuvent être exécutées en parallèle ; contactez votre KAM pour augmenter cette limite. |
Gestion de la limitation du taux
Nos endpoints - sauf pour les appels à/auctions ou /events - sont limités en taux pour éviter les abus. Si vous dépassez la limite de taux, vous recevrez une réponse d’erreur 429. Il existe deux méthodes recommandées pour gérer ces limites
Réessayer avec un délai exponentiel
La réessai avec délai exponentiel est une technique utilisée en programmation pour réessayer une opération avec des intervalles croissants entre les tentatives, ce qui aide à atténuer les problèmes tels que la latence réseau, les défaillances temporaires ou les contraintes de ressources. Ci-dessous se trouve un exemple de code en Python sur la façon dont la technique peut être implémentée.Utiliser Retry-After
Utilisez les valeurs dans les en-têtes pour déterminer quand vous pouvez effectuer une autre requête :
X-RateLimit-Limit: combien de requêtes vous avez effectuées pendant la périodeX-RateLimit-Remaining: requêtes restantes pendant la périodeX-RateLimit-Reset: quand vous pouvez effectuer une autre requête
429, même si vous avez attendu le temps spécifié dans X-RateLimit-Reset. Si vous
rencontrez ce problème, vous voudrez peut-être soit remplacer cette technique par le
délai exponentiel ou les utiliser ensemble, c’est-à-dire attendre d’abord le temps
donné par X-RateLimit-Reset puis revenir au délai exponentiel.