Configurer une enchère publicitaire sur la page de l'éditeur

Découvrez comment configurer une mise aux enchères de l'API Protected Audience.

Enchères sur l'appareil gérées par les vendeurs

Une mise aux enchères Protected Audience sur l'appareil se déroule sur un site qui vend des espaces publicitaires. La partie qui lance l'enchère est le vendeur. De nombreuses parties peuvent agir en tant que vendeurs: un site peut gérer ses propres enchères publicitaires, inclure un script tiers afin de lancer la mise aux enchères pour celui-ci, ou utiliser une SSP qui combine la diffusion d'enchères sur l'appareil avec d'autres activités d'enchères publicitaires côté serveur. Les vendeurs ont trois tâches de base dans les enchères publicitaires sur l'appareil:

  1. Les vendeurs décident (a) quels acheteurs peuvent participer et (b) des enchères issues des groupes de centres d'intérêt de ces acheteurs qui sont éligibles à participer à l'enchère. Cela permet au vendeur d'appliquer les règles du site concernant les annonces autorisées à être diffusées sur la page.
  2. Les vendeurs sont responsables de la logique métier de l'enchère: un code JavaScript qui prend en compte le prix et les métadonnées de chaque offre, puis calcule un score de "désirabilité". L'enchère avec le score de désirabilité le plus élevé remporte l'enchère.
  3. Les vendeurs créent des rapports sur le résultat des enchères, y compris des informations sur la compensation du prix et les autres paiements. Les acheteurs qui gagnent ou perdent également peuvent générer leurs propres rapports.

Ce document vous explique comment configurer et lancer une enchère sur l'appareil.

Configurer une mise aux enchères publicitaires de l'API Protected Audience

Pour lancer une mise aux enchères publicitaires de l'API Protected Audience, la première étape consiste à configurer la mise aux enchères. Pour ce faire, créez un objet auctionConfig. Voici un exemple de ce type de configuration:

const auctionConfig = {
  seller: 'https://seller.example',
  decisionLogicUrl: ...,
  trustedScoringSignalsUrl: ...,
  interestGroupBuyers: ['https://buyer-1.example', 'https://buyer-2.example', ...],
  auctionSignals: {...},
  sellerSignals: {...},
  sellerTimeout: 100,
  perBuyerSignals: {
    'https://buyer-1.example': {...},
    'https://buyer-2.example': {...},
    ...
  },
  perBuyerTimeouts: {
    'https://buyer-1.example': 50,
    'https://buyer-2.example': 200,
    '*': 150,
    ...
  },
  componentAuctions: [
    {
      'seller': 'https://component-seller.example',
      'decisionLogicUrl': ...,
      ...
    },
    ...
  ],
  resolveToConfig: [true|false],
};

AuctionConfig de propriétés

Propriétés obligatoires

Les seules propriétés obligatoires pour auctionConfigs sont seller, decisionLogicUrl et interestGroupBuyers.

Propriété Exemple Rôle
vendeur https://seller.example Origine du vendeur.
decisionLogicUrl https://seller.example/decision-logic.js URL pour le worklet de logique de décision JavaScript d'enchères. Ce champ doit avoir la même origine que le champ du vendeur.
interestGroupBuyers [https://buyer-1.example,
https://buyer-2.example,
...]
Origines de tous les propriétaires de groupes de centres d'intérêt invités à définir une enchère dans la mise aux enchères

Propriétés facultatives

Les autres propriétés pour auctionConfigs sont facultatives.

Propriété Exemple Rôle
trustedScoringSignalsUrl https://seller.example/scoring-signals URL du serveur de clé-valeur du vendeur. Celle-ci sera interrogée lors du processus d'évaluation des annonces en utilisant l'URL de rendu de la création comme clé. Ce champ doit avoir la même origine que le champ du vendeur.
auctionSignals {"category":"actualités"} Objet sérialisable JSON représentant les signaux disponibles pour tous les acheteurs et vendeurs participant à la mise aux enchères.
sellerSignals {...} Objet sérialisable JSON représentant les signaux disponibles uniquement pour les vendeurs.
perBuyerSignals {https://dsp.example: {...},
https://another-buyer.example: {...},
... }
Signaux disponibles pour un acheteur spécifique. Ces signaux peuvent provenir des vendeurs, mais aussi des acheteurs eux-mêmes.
perBuyerTimeouts {https://www.example-dsp.com: 50,
https://www.another-buyer.com: 200,
*: 150,
...},
Durée maximale, en millisecondes, du script generateBid() d'un acheteur spécifique. Un caractère générique sera appliqué à chaque acheteur pour lequel aucun délai d'expiration spécifique n'est défini.
sellerTimeout 100 Durée maximale d'exécution, en millisecondes, du script scoreAd() d'un vendeur.
componentAuctions [{seller: https://www.some-other-ssp.com, decisionLogicUrl: ..., ...}, ...] Configurations supplémentaires pour les enchères de composants.
resolveToConfig vrai|faux Valeur booléenne indiquant que la promesse renvoyée par runAdAuction() est résolue en FencedFrameConfig si la valeur est "true" (pour une utilisation dans un cadre <cloisonné>) ou en URL opaque urn:uuid si elle est définie sur "false" (pour une utilisation dans un <iframe>). La valeur par défaut est "false".

Fournir des signaux de manière asynchrone

Les valeurs de certains signaux (celles configurées par les champs auctionSignals, sellerSignals, perBuyerSignals et perBuyerTimeouts) peuvent éventuellement être fournies en tant que valeurs non concrètes, mais en tant que promesses. Cela permet à certaines parties de l'enchère, telles que le chargement de scripts et de signaux de confiance, et le lancement de processus de worklet isolés, de chevaucher le calcul (ou la récupération du réseau) de ces valeurs. Les scripts de worklet ne verront que les valeurs résolues. Si l'une de ces promesses est rejetée, l'enchère sera annulée, sauf si elle a déjà échoué ou si elle est annulée d'une autre manière.

Configurer une mise aux enchères avec plusieurs vendeurs

Dans certains cas, plusieurs vendeurs peuvent vouloir participer à une mise aux enchères. Les gagnants d'enchères distinctes sont alors transmis à une autre mise aux enchères gérée par un autre vendeur. Ces enchères distinctes manquées sont appelées "enchères de composants". Pour faciliter ces mises aux enchères de composants, l'objet componentAuctions peut contenir des configurations d'enchères supplémentaires pour chaque enchère de composants de chaque vendeur. L'enchère gagnante de chacune de ces mises aux enchères de composants sera transmise à l'enchère de "niveau supérieur", qui déterminera l'enchère finale. L'élément auctionConfig des enchères de composants peut ne pas avoir sa propre valeur componentAuctions. Lorsque componentAuctions n'est pas vide, interestGroupBuyers doit être vide. Autrement dit, pour chaque enchère Protected Audience spécifique, il existe un seul vendeur et aucune mise aux enchères de composants, ou toutes les enchères proviennent d'enchères de composants, et l'enchère de premier niveau ne peut choisir que parmi les gagnantes des enchères de composants.

Mise aux enchères

Le vendeur demande au navigateur de l'utilisateur de lancer une mise aux enchères en appelant navigator.runAdAuction().

try {
  const auctionResultPromise = navigator.runAdAuction(auctionConfig);
} catch (error) {
  // Handle error.
}

L'appel runAdAuction() renvoie une promesse qui renvoie vers l'annonce. Aucun code de la page de l'éditeur ne peut inspecter l'annonce gagnante ni en apprendre davantage sur son contenu à partir du résultat de runAdAuction(). Si l'option resolveToConfig a été définie sur "true" dans AuctionConfig, un objet FencedFrameConfig est renvoyé. Il ne peut s'afficher que dans un frame cloisonné. Si l'indicateur était défini sur "false", un URN opaque est renvoyé, qui peut être affiché dans un iFrame. Il est possible que runAdAuction renvoie une valeur nulle, indiquant qu'aucune annonce n'a été sélectionnée. Dans ce cas, le vendeur peut choisir d'afficher une annonce contextuelle.