Fonctionnement des ID de rapport dans une mise aux enchères Protected Audience
Présentation
Les ID de reporting sont des identifiants associés à une annonce qui peuvent être utilisés pour générer une enchère, en évaluer l'évaluation et créer des rapports. Les ID de reporting sont fournis par l'acheteur dans la configuration du groupe de centres d'intérêt. Ils sont ensuite disponibles dans generateBid()
, scoreAd()
, reportResult()
et reportWin()
sous diverses conditions décrites dans ce guide.
Les ID de rapport vous permettent de signaler un identifiant pour une annonce et d'utiliser des cas d'utilisation tels que les offres.
Il existe trois ID de reporting de deux types:
- ID de rapport non sélectionnables
buyerReportingId
(une chaîne)buyerAndSellerReportingId
(une chaîne)
- ID de reporting sélectionnables
selectableBuyerAndSellerReportingIds
(tableau de chaînes)
Les ID de reporting se comportent différemment selon que des ID de reporting sélectionnables sont utilisés ou non. Lorsque seuls des ID de reporting non sélectionnables sont utilisés, ils ne deviennent disponibles que dans les fonctions de création de rapports. Lorsque des ID de reporting sélectionnables sont utilisés, ainsi que des ID de reporting non sélectionnables si nécessaire, tous les ID définis sont également disponibles dans generateBid()
et scoreAd()
.
ID de reporting non sélectionnables
buyerReportingId
et buyerAndSellerReportingId
sont des ID de reporting non sélectionnables qui sont définis dans la configuration du groupe de centres d'intérêt et qui deviennent disponibles dans les fonctions de reporting pour les acheteurs et les vendeurs. Les fonctions de création de rapports pour les acheteurs et les vendeurs ne sont exécutées que pour l'annonce gagnante, et reçoivent les ID de rapport définis pour cette annonce.
Lorsqu'elle est utilisée sans ID de rapport sélectionnables, la fonction de création de rapports de l'acheteur reçoit buyerReportingId
ou buyerAndSellerReportingId
, en fonction du comportement d'écrasement, et la fonction de création de rapports du vendeur reçoit buyerAndSellerReportingId
. Si ni buyerReportingId
, ni buyerAndSellerReportingId
ne sont définis dans la configuration du groupe de centres d'intérêt, la fonction reportWin()
reçoit le nom du groupe de centres d'intérêt (interestGroupName
) de l'enchère gagnante.
Les ID non sélectionnables ne sont pas disponibles dans generateBid()
et scoreAd()
s'ils ne sont pas utilisés conjointement avec des ID de reporting sélectionnables.
ID de reporting dans les groupes de centres d'intérêt
Les ID de reporting sont définis par l'acheteur pour chaque annonce d'un groupe de centres d'intérêt:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
// buyerAndSellerReportingId goes to the buyer and seller reporting functions
buyerAndSellerReportingId: 'bsrid123',
// buyerReportingId is defined here as an example, but
// is not used due to the overwrite rules described later
buyerReportingId: 'brid123',
}]
});
Rapports sur les vendeurs
Lors de la phase de création de rapports des vendeurs, la valeur buyerAndSellerReportingId
devient disponible pour reportResult()
:
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
Avant que l'ID ne soit disponible dans reportResult()
, le k-anonymat est vérifié auprès du propriétaire du groupe de centres d'intérêt, de l'URL du script d'enchères, de l'URL de rendu et de la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum). Si elle n'est pas k-anonyme, la fonction reportResult()
s'exécutera toujours, mais la valeur de l'ID de rapport ne sera pas disponible dans la fonction.
Rapports sur les acheteurs
Pendant la phase de création de rapports de l'acheteur pour la mise aux enchères, un ID de reporting devient disponible pour reportWin()
. Si plusieurs ID de reporting sont définis dans le groupe de centres d'intérêt, une règle de remplacement est appliquée lorsque buyerAndSellerReportingId
écrase buyerReportingId
:
- Si
buyerAndSellerReportingId
etbuyerReportingId
sont tous deux définis,buyerAndSellerReportingId
remplacebuyerReportingId
etbuyerAndSellerReportingId
est disponible dansreportWin()
. - Si seul
buyerReportingId
est défini,buyerReportingId
sera disponible. - Si ni
buyerAndSellerReportingId
, nibuyerReportingId
ne sont définis,interestGroupName
est disponible.
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId // 'bsrid123'
} = browserSignals;
sendReportTo(`https://seller.example/report?bsrid=${buyerAndSellerReportingId}`);
}
L'ID de reporting disponible dans reportWin()
fait l'objet d'une vérification du k-anonymat avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum). Si la vérification échoue, reportWin()
s'exécutera quand même, mais la valeur de l'ID de reporting ne sera pas disponible dans la fonction.
Seul buyerReportingId
est défini
Si seul buyerReportingId
est défini dans la configuration du groupe d'intérêt:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
}]
});
Ensuite, buyerReportingId
est disponible dans reportWin()
:
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
} = browserSignals;
}
Avant d'être disponible pour reportWin()
, nous vérifions que buyerReportingId
présente le k-anonymat avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum).
Seul l'identifiant "buyerAndSellerReportingId" est défini.
Si seul buyerAndSellerReportingId
est défini dans la configuration du groupe d'intérêt:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerAndSellerReportingId: 'bsrid123',
}]
});
Ensuite, buyerAndSellerReportingId
est disponible dans reportWin()
:
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
Avant d'être disponible pour reportWin()
, nous vérifions que buyerAndSellerReportingId
présente le k-anonymat avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum).
buyerAndSellerReportingId
et buyerReportingId
sont tous deux définis
Si buyerAndSellerReportingId
et buyerReportingId
sont définis dans la configuration du groupe de centres d'intérêt :
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
}]
});
Dans ce cas, seul buyerAndSellerReportingId
est disponible dans reportWin()
en raison du comportement d'écrasement:
function reportWin(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
} = browserSignals;
}
Avant d'être disponible pour reportWin()
, nous vérifions que buyerAndSellerReportingId
présente le k-anonymat avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum).
Ni buyerAndSellerReportingId
, ni buyerReportingId
ne sont définis
Si aucun ID de reporting n'est défini dans la configuration du groupe d'intérêt:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
}]
});
Le groupe de centres d'intérêt name
est alors disponible dans reportWin()
:
function reportWin(..., browserSignals, ...) {
const {
interestGroupName, // 'example-interest-group'
} = browserSignals;
}
Avant d'être disponible pour reportWin()
, le nom du groupe de centres d'intérêt (interestGroupName
) est vérifié pour s'assurer qu'il est k-anonyme avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au premier trimestre 2025 au moins).
ID de reporting sélectionnables
Les ID de rapport sélectionnables permettent à un acheteur de sélectionner un ID lors de la génération d'enchères. Le navigateur met ensuite la valeur sélectionnée à la disposition de scoreAd()
et des fonctions de création de rapports. La valeur selectableBuyerAndSellerReportingIds
, qui est un tableau de chaînes, est fournie à generateBid()
. L'acheteur peut renvoyer un ID sélectionné en tant que selectedBuyerAndSellerReportingId
.
Les fonctions generateBid()
et scoreAd()
s'exécutent pour chaque annonce définie dans la configuration du groupe d'intérêts et reçoivent les ID de rapport pour chaque annonce. Les fonctions de création de rapports pour l'acheteur et le vendeur ne s'exécutent que pour l'annonce gagnante. Elles reçoivent les ID de rapport définis pour cette annonce gagnante.
Lorsque des ID de reporting non sélectionnables sont utilisés conjointement avec des ID de reporting sélectionnables, leur comportement change par rapport au processus décrit dans la section précédente. Contrairement au comportement initial des ID de reporting non sélectionnables qui ne sont disponibles que dans les fonctions de reporting, les ID de reporting sélectionnables permettent également de les rendre disponibles dans generateBid()
et scoreAd()
.
Groupe d'intérêt
Le champ des ID de création de rapports sélectionnables (selectableBuyerAndSellerReportingIds
) est un tableau de chaînes défini par l'acheteur dans le groupe de centres d'intérêt d'une annonce. Les ID de reporting non sélectionnables peuvent également être définis en plus des ID de reporting sélectionnables:
navigator.joinAdInterestGroup({
owner: 'https://buyer.example',
name: 'example-interest-group',
ads: [{
renderUrl: `https://buyer.example/ad.html`,
buyerReportingId: 'brid123',
buyerAndSellerReportingId: 'bsrid123',
selectableBuyerAndSellerReportingIds: ['sbsrid1', 'sbsrid2', 'sbsrid3']
}]
});
Génération d'enchères de l'acheteur
Si selectableBuyerAndSellerReportingIds
a été défini dans la configuration du groupe de centres d'intérêt, il devient disponible dans generateBid()
avec les autres ID de reporting définis.
function generateBid(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectableBuyerAndSellerReportingIds // ['sbsrid1', 'sbsrid2', 'sbsrid3']
} = browserSignals;
return {
bid: 1,
render: 'https://buyer.example/ad.html',
selectedBuyerAndSellerReportingId: 'sbsrid2' // Buyer returns the selected ID
};
}
L'acheteur peut choisir l'un des ID du tableau selectableBuyerAndSellerReportingIds
dans generateBid()
et renvoyer l'ID sélectionné sous la forme selectedBuyerAndSellerReportingId
. L'enchère est refusée si la valeur sélectionnée ne figure pas dans le tableau selectableBuyerAndSellerReportingIds
. Si selectableBuyerAndSellerReportingIds
est défini dans la configuration du groupe de centres d'intérêt et que l'acheteur ne renvoie pas selectedBuyerAndSellerReportingId
à partir de generateBid()
, les ID de reporting reviendront au comportement décrit pour les ID de reporting non sélectionnables.
Une enchère avec une valeur renvoyée pour selectedbuyerAndSellerReportingId
ne peut remporter l'enchère que si la valeur de selectedbuyerAndSellerReportingId
est k-anonyme conjointement avec buyerAndSellerReportingId
(le cas échéant), buyerReportingId
(si présent), le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum).
Évaluation des annonces du vendeur
Pour le vendeur, le selectedBuyerAndSellerReportingId
renvoyé par l'acheteur à partir de generateBid()
devient disponible dans scoreAd()
, ainsi que buyerAndSellerReportingId
s'il a été défini dans la configuration du groupe de centres d'intérêt.
function scoreAd(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId, // 'sbsrid2'
} = browserSignals;
// ...
}
Rapports sur les vendeurs
Pour les rapports sur les vendeurs, le selectedBuyerAndSellerReportingId
qui a été renvoyé par l'acheteur depuis generateBid()
devient disponible dans reportResult()
, avec buyerAndSellerReportingId
, s'il a été défini dans le groupe de centres d'intérêt.
function reportResult(..., browserSignals, ...) {
const {
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
Si selectableBuyerAndSellerReportingIds
a été défini dans la configuration du groupe de centres d'intérêt et que selectedBuyerAndSellerReportingId
a été renvoyé par generateBid()
, il ne peut pas remporter l'enchère, sauf si selectedBuyerAndSellerReportingId
et buyerAndSellerReportingId
(le cas échéant) sont k-anonymes avec le propriétaire du groupe de centres d'intérêt, l'URL du script d'enchères, l'URL de rendu et la taille de l'annonce (la taille de l'annonce est exclue de cette vérification jusqu'au 1er trimestre 2025 minimum). reportResult()
ne sera pas exécuté pour cette enchère. Par conséquent, si reportResult()
est appelé avec une valeur pour selectedBuyerAndSellerReportingId
, cela signifie que les ID de rapport ont réussi la vérification de l'anonymat k et que tous les ID de rapport définis seront disponibles dans reportResult()
.
Rapports sur les acheteurs
Si selectableBuyerAndSellerReportingIds
a été défini dans la configuration du groupe de centres d'intérêt et que selectedBuyerAndSellerReportingId
est renvoyé à partir de generateBid()
, tous les ID de reporting définis dans la configuration de groupe de centres d'intérêt deviennent disponibles. Notez que, comme pour les rapports sur les vendeurs, si les ID de rapport ne sont pas k-anonymes, ils ne peuvent pas gagner l'enchère et reportWin()
ne s'exécutera pas pour cette enchère.
function reportWin(..., browserSignals, ...) {
const {
buyerReportingId, // 'brid123'
buyerAndSellerReportingId, // 'bsrid123'
selectedBuyerAndSellerReportingId // 'sbsrid2'
} = browserSignals;
// ...
}
Règles de forçage
Voici un récapitulatif des règles de remplacement applicables aux ID de reporting non sélectionnables et aux ID de reporting sélectionnables. Le type de données (selectableBuyerAndSellerReportingIds
, buyerAndSellerReportingId
, buyerReportingId
et nom du groupe de centres d'intérêt transmis à reportWin()
) est déterminé par le navigateur selon la logique suivante:
- Si
selectedBuyerAndSellerReportingId
est renvoyé à partir d'une enchère, les élémentsselectedBuyerAndSellerReportingId
,buyerAndSellerReportingId
(s'ils sont définis dans le groupe de centres d'intérêt) etbuyerReportingId
(s'ils sont définis dans le groupe de centres d'intérêt) sont tous disponibles pour les rapports. - Sinon, si
buyerAndSellerReportingId
est défini dans le groupe de centres d'intérêt, seulbuyerAndSellerReportingId
est disponible pour les rapports. - Sinon, si
buyerReportingId
est défini dans le groupe de centres d'intérêt, seulbuyerReportingId
est disponible pour les rapports. - Sinon, seul le groupe de centres d'intérêt
name
est disponible pour la création de rapports.
Le tableau suivant décrit le comportement d'écrasement:
Les ID de reporting sont-ils définis dans la configuration du groupe de centres d'intérêt ? | ID de reporting disponibles | |||
selectableBuyerAnd
|
buyerAndSeller
|
buyerReportingId
|
reportWin()
|
reportResult()
|
Oui, et vous avez sélectionné dans generateBid()
|
Facultatif | Facultatif |
1) selectableBuyerAnd 2) buyerAndSeller (si défini)3) buyerReportingId (si défini)
|
1) selectableBuyerAnd 2) buyerAndSeller (si défini) |
Non, ou non sélectionné dans generateBid() |
Oui | Ignoré | buyerAndSeller |
buyerAndSeller |
Non, ou non sélectionné dans generateBid() |
Non | Oui | buyerReportingId |
Aucun |
Non, ou non sélectionné dans generateBid() |
Non | Non | interestGroupName |
Aucun |
Interagir et partager des commentaires
- Pour en savoir plus sur les ID de reporting, consultez la section ID de reporting de la description de l'API Protected Audience.
- GitHub: posez des questions et suivez les discussions sur les problèmes dans le dépôt d'API.
- W3C: discutez de cas d'utilisation dans différents secteurs lors de l'appel WiCG.
- Annonces: rejoignez ou consultez la liste de diffusion.
- Assistance pour les développeurs de la Privacy Sandbox: posez des questions et participez à des discussions dans le dépôt d'assistance pour les développeurs de la Privacy Sandbox.
- Chromium : signalez un bug Chromium pour poser des questions sur l'implémentation disponible à tester dans Chrome.