Skip to main content
publisherQuery permet à vos propres services d’interroger les produits et les droits d’un utilisateur, y compris l’état de son abonnement XBOX Game Pass. Votre service ne doit pas interroger régulièrement les achats des utilisateurs, afin d’éviter les limites de fréquence d’appels basées sur une fenêtre de temps par utilisateur. Actuellement, la limite est de 100 requêtes dans une fenêtre de cinq minutes pour un même utilisateur. Le déclenchement d’une limite de fréquence entraîne une réponse HTTP 429 indiquant quand la prochaine requête peut être effectuée. Les résultats incluent uniquement les produits directement possédés par le compte d’utilisateur pour le compte duquel votre service effectue l’appel, ou auxquels ce compte a droit. Les droits partagés qui peuvent apparaître sur le client ne sont pas renvoyés. Consultez Modèle de partage de produits pour les jeux. Pour obtenir des informations spécifiques sur l’interrogation de l’état de l’abonnement Game Pass d’un utilisateur, consultez Détection de l’accès à l’abonnement XBOX Game Pass à partir de votre service.
publisherQuery prend uniquement en charge les appels provenant des services partenaires.
Les applications clientes ou les jeux ne peuvent pas appeler ce service directement.

Mises à jour et améliorations de publisherQuery (Collections Query v9)

publisherQuery est la dernière API Collections Query (v9). Si vous effectuez une migration depuis b2bLicensePreview (v8), consultez cette section pour connaître les différences de comportement. publisherQuery présente les modifications et améliorations suivantes par rapport à b2bLicensePreview :
  • Possibilité d’interroger l’état de l’abonnement XBOX Game Pass d’un utilisateur
  • Exige une liste prédéfinie de produits à renvoyer. Il s’agissait d’une bonne pratique, mais non obligatoire, avec b2bLicensePreview v8. Les titres qui ne suivaient pas cette bonne pratique rencontraient souvent des problèmes après leur sortie, la requête expirant en raison de l’étendue importante du contenu déterminée par leurs paramètres de requête. Cela empêchait les utilisateurs d’obtenir leurs crédits en jeu jusqu’à ce que le service du jeu soit mis à jour pour spécifier les ProductIds souhaités dans la requête.
  • Champs de données de réponse simplifiés pour supprimer les valeurs inutilisées ou superflues
  • Paramètres de requête simplifiés en fonction des commentaires des développeurs
Supprimés du corps de la requête :
  • Market : toutes les requêtes disposent du contexte de toutes les régions dans publisherQuery
  • ExpandSatisfyingItems : tous les résultats développent les droits satisfaisants dans publisherQuery
  • EntitlementsFilter : non utilisé, car une liste prédéfinie de productIds est obligatoire pour la requête
publisherQuery ne prend pas en charge les LegacyProductIds (ProductIds générés à partir de l’ancien XBOX Developer Portal, désormais retiré, et utilisés comme ProductId par le service XBOX Inventory).
Si vous migrez votre service depuis XBOX Inventory, vous devez mapper en interne le StoreId (valeur ProductId de Collections) au LegacyProductId correspondant sur votre propre service. Sinon, vous pouvez utiliser b2bLicensePreview v8, qui renvoie à la fois le StoreId et les LegacyProductIds.
Pour plus d’informations, consultez l’article correspondant Sélection de l’API de requête Collections adaptée à vos besoins

Prérequis

Consultez Prérequis pour les API de service à service. Cette API prend en charge les types d’authentification Microsoft Entra ID et X-token d’autorisation déléguée. Si la configuration du produit n’est pas publiée dans Partner Center, les appels peuvent réussir mais ne renvoyer aucun résultat.

Requête

Syntaxe de la requête

En-tête de la requête

Corps de la requête

L’objet ProductSkuId contient les paramètres suivants.

Exemple de requête

L’API publisherQuery v9 prend en charge un maximum de 100 productSkuIds par requête. Si vous fournissez plus de 100 productIds dans productSkuIds, l’API renvoie une erreur HTTP 400.
La valeur par défaut de maxPageSize est 100, mais elle est plus faible dans cet exemple afin d’illustrer la demande des éléments restants.

Réponse

Corps de la réponse

L’objet PublisherQueryItemContractV9 contient les paramètres suivants. L’objet TrialInformation contient les paramètres présentés dans le tableau suivant.

Valeurs et signification des types de produits

Valeurs et signification des états de produit

Valeurs et signification de acquisitionType

Comprendre les résultats des droits satisfaits avec le champ satisfiedByProductIds

Si le tableau satisfiedByProductIds est vide, l’utilisateur dispose d’un droit direct sur l’élément, issu d’un achat direct. Sinon, si le tableau satisfiedByProductIds contient un ou plusieurs ProductIds, l’utilisateur a droit à l’élément par le biais de ces produits (packs, abonnements, etc.). Si l’utilisateur dispose à la fois d’un droit direct et d’un droit satisfaisant sur un élément, et que excludeDuplicates a la valeur True dans la requête, le droit direct est prioritaire et satisfiedByProductIds est vide.

Exemple de réponse

Demande des résultats restants avec le jeton de continuation

Si votre requête comporte plus de résultats que ce qui peut être renvoyé dans une seule réponse (contrôlé par maxPageSize), la réponse à votre requête initiale contient un continuationToken. Vous pouvez ensuite utiliser ce continuationToken dans une requête de suivi en ajoutant le jeton de continuation à une copie du corps de la requête précédente. Exemple de requête de continuation :
Même si vous spécifiez l’indicateur excludeDuplicates, lors de l’utilisation d’un jeton de continuation, il est possible d’obtenir des entrées de droits ayant des états différents. Vérifiez donc les résultats pour détecter les entrées en double et celles dont l’état n’est pas Active.

Voir aussi

Gérer les produits à partir de vos services Authentifier votre service auprès des API du Microsoft Store Gérer les produits consommables à partir de votre service
Last modified on October 6, 2026