From ce4855a0fd5c9621faf2bd8132a40e8ccccdfcce Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 11:02:26 -0500 Subject: [PATCH 01/15] Add optional slot-size parameters to trustedBiddingSignalsURL requests This is a slightly modified version of the proposal in issue 869 --- FLEDGE.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index f4071104a..5676ed156 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -121,6 +121,7 @@ const myGroup = { 'executionMode': ..., 'trustedBiddingSignalsURL': ..., 'trustedBiddingSignalsKeys': ['key1', 'key2'], + 'trustedBiddingSignalsSlotSizeMode' : 'slot-size', 'userBiddingSignals': {...}, 'ads': [{renderUrl: shoesAd1, sizeGroup: 'group1', ...}, {renderUrl: shoesAd2, sizeGroup: 'group2', ...}, @@ -313,7 +314,8 @@ const myAuctionConfig = { 'trustedScoringSignalsURL': ..., 'interestGroupBuyers': ['https://www.example-dsp.com', 'https://buyer2.com', ...], 'auctionSignals': {...}, - 'requestedSize': {width: 100, height: 200}, + 'requestedSize': {width: '100', height: '200'}, + 'allSlotsRequestedSizedSizes': [{width: '100', height: '200'}, {width: '200', height: '300'}, ...], 'directFromSellerSignals': 'https://www.example-ssp.com/...', 'sellerSignals': {...}, 'sellerTimeout': 100, @@ -371,6 +373,8 @@ This will cause the browser to execute the appropriate bidding and auction logic The optional `requestedSize` field recommends a frame size for the auction, which will be available to bidders in browser signals. This size should be specified in the same format as the sizes in the `adSizes` field of `joinAdInterestGroup`. For convenience, the returned fenced frame config will automatically populate a ``'s `width` and `height` attributes with the `requestedSize` when loaded, though the element's size attributes can still be modified if you want to change the element's container size. Bidders inside the auction may pick a different content size for the ad, and that resulting size will be visually scaled to fit inside the element's container size. +`allSlotsRequestedSizedSizes` may optionally be used to specify the size of all ad slots on the page, to be passed to each interest group's `trustedBuyerSignalsURL`, for interest groups that request it. All sizes in the list must be distinct. + The optional `directFromSellerSignals` field can also be used to pass signals to the auction, similar to `sellerSignals`, `perBuyerSignals`, and `auctionSignals`. The difference is that `directFromSellerSignals` are trusted to come from the seller because the content loads from a [subresource bundle](https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md) loaded from a seller's origin, ensuring the authenticity and integrity of the signals. For more details, see [2.5 directFromSellerSignals](#25-additional-trusted-signals-directfromsellersignals). In some cases, multiple SSPs may want to participate in an auction, with the winners of separate auctions being passed up to another auction, run by another SSP. To facilitate these "component auctions", `componentAuctions` can optionally contain additional auction configurations for each seller's "component auction". The winning bid of each of these "component auctions" will be passed to the "top-level" auction. How bids are scored in this case is further described in [2.4 Scoring Bids in Component Auctions](#24-scoring-bids-in-component-auctions). The `AuctionConfig` of component auctions may not have their own `componentAuctions`. When `componentAuctions` is non-empty, `interestGroupBuyers` must be empty. That is, for any particular Protected Audience auction, either there is a single seller and no component auctions, or else all bids come from component auctions and the top-level auction can only choose among the component auctions' winners. @@ -589,11 +593,11 @@ Buyers have three basic jobs in the on-device ad auction: #### 3.1 Fetching Real-Time Data from a Trusted Server -Buyers may want to make on-device decisions that take into account real-time data (for example, the remaining budget of an ad campaign). This need can be met using the interest group's `trustedBiddingSignalsURL` and `trustedBiddingSignalsKeys` fields. Once a seller initiates an on-device auction on a publisher page, the browser checks each participating interest group for these fields, and makes an uncredentialed (cookieless) HTTP fetch to a URL of the form: +Buyers may want to make on-device decisions that take into account real-time data (for example, the remaining budget of an ad campaign). This need can be met using the interest group's `trustedBiddingSignalsURL`, `trustedBiddingSignalsKeys`, and, optionally, `trustedBiddingSignalsSlotSizeMode` fields. Once a seller initiates an on-device auction on a publisher page, the browser checks each participating interest group for these fields, and makes an uncredentialed (cookieless) HTTP fetch to a URL of the form: - https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345 + https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slot-size=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the top-level auctions AuctionConfig. In the `all-slots-requested-sizes` case, `slotSizes=,,,,...` is appended, where all sizes are taken from the top-level auction's `allSlotsRequsetedSizes` value. If the corresponding value is not present in the top-level auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From ce591782f153a8ccd6cb0cf3c13b1c6a1beedf3b Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 11:37:20 -0500 Subject: [PATCH 02/15] Update FLEDGE.md Typo --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 5676ed156..8b2e126e7 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -315,7 +315,7 @@ const myAuctionConfig = { 'interestGroupBuyers': ['https://www.example-dsp.com', 'https://buyer2.com', ...], 'auctionSignals': {...}, 'requestedSize': {width: '100', height: '200'}, - 'allSlotsRequestedSizedSizes': [{width: '100', height: '200'}, {width: '200', height: '300'}, ...], + 'allSlotsRequestedSizes': [{width: '100', height: '200'}, {width: '200', height: '300'}, ...], 'directFromSellerSignals': 'https://www.example-ssp.com/...', 'sellerSignals': {...}, 'sellerTimeout': 100, From f229705aaa99760a81b25be050fcc4de5a4db5b7 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 12:11:34 -0500 Subject: [PATCH 03/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 8b2e126e7..1237998e4 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -373,7 +373,7 @@ This will cause the browser to execute the appropriate bidding and auction logic The optional `requestedSize` field recommends a frame size for the auction, which will be available to bidders in browser signals. This size should be specified in the same format as the sizes in the `adSizes` field of `joinAdInterestGroup`. For convenience, the returned fenced frame config will automatically populate a ``'s `width` and `height` attributes with the `requestedSize` when loaded, though the element's size attributes can still be modified if you want to change the element's container size. Bidders inside the auction may pick a different content size for the ad, and that resulting size will be visually scaled to fit inside the element's container size. -`allSlotsRequestedSizedSizes` may optionally be used to specify the size of all ad slots on the page, to be passed to each interest group's `trustedBuyerSignalsURL`, for interest groups that request it. All sizes in the list must be distinct. +`allSlotsRequestedSizes` may optionally be used to specify the size of all ad slots on the page, to be passed to each interest group's `trustedBuyerSignalsURL`, for interest groups that request it. All sizes in the list must be distinct. The optional `directFromSellerSignals` field can also be used to pass signals to the auction, similar to `sellerSignals`, `perBuyerSignals`, and `auctionSignals`. The difference is that `directFromSellerSignals` are trusted to come from the seller because the content loads from a [subresource bundle](https://github.com/WICG/webpackage/blob/main/explainers/subresource-loading.md) loaded from a seller's origin, ensuring the authenticity and integrity of the signals. For more details, see [2.5 directFromSellerSignals](#25-additional-trusted-signals-directfromsellersignals). From 4eefec4e72c74b73e020591b08f5211b24330f29 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 12:24:48 -0500 Subject: [PATCH 04/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 1237998e4..1d0f6201e 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slot-size=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the top-level auctions AuctionConfig. In the `all-slots-requested-sizes` case, `slotSizes=,,,,...` is appended, where all sizes are taken from the top-level auction's `allSlotsRequsetedSizes` value. If the corresponding value is not present in the top-level auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the top-level auction's AuctionConfig. In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the top-level auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the top-level auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From c9af0212af0b2f211aa65794b504adb1e8b88660 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 12:29:25 -0500 Subject: [PATCH 05/15] Update FLEDGE.md --- FLEDGE.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index 1d0f6201e..ad629857d 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -131,10 +131,10 @@ const myGroup = { {renderUrl: gymShoes, sizeGroup; 'group2', ...}, {renderUrl: gymTrainers1, sizeGroup: 'size4', ...}, {renderUrl: gymTrainers2, sizeGroup: 'size4', ...}], - 'adSizes': {'size1': {width: width1, height: height1}, - 'size2': {width: width2, height: height2}, - 'size3': {width: width3, height: height3}, - 'size4': {width: width4, height: height4}}, + 'adSizes': {'size1': {width: 'width1', height: 'height1'}, + 'size2': {width: 'width2', height: 'height2'}, + 'size3': {width: 'width3', height: 'height3'}, + 'size4': {width: 'width4', height: 'height4'}}, 'sizeGroups:' {'group1': ['size1', 'size2', 'size3'], 'group2': ['size3', 'size4']}, 'auctionServerRequestFlags': ['omit-ads'], From 5bdac816e868a77fbef88b12060301fc557c9ddd Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 12:32:08 -0500 Subject: [PATCH 06/15] Update FLEDGE.md --- FLEDGE.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index ad629857d..b29f06f1b 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -131,10 +131,10 @@ const myGroup = { {renderUrl: gymShoes, sizeGroup; 'group2', ...}, {renderUrl: gymTrainers1, sizeGroup: 'size4', ...}, {renderUrl: gymTrainers2, sizeGroup: 'size4', ...}], - 'adSizes': {'size1': {width: 'width1', height: 'height1'}, - 'size2': {width: 'width2', height: 'height2'}, - 'size3': {width: 'width3', height: 'height3'}, - 'size4': {width: 'width4', height: 'height4'}}, + 'adSizes': {'size1': {width: '100', height: '100'}, + 'size2': {width: '100px', height: '200px'}, + 'size3': {width: '200sw', height: '200sw'}, + 'size4': {width: '100sh', height: '100sh'}}, 'sizeGroups:' {'group1': ['size1', 'size2', 'size3'], 'group2': ['size3', 'size4']}, 'auctionServerRequestFlags': ['omit-ads'], From dc11454f1717dae9f85996e21dfd9bf9310dcbda Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 22 Nov 2023 15:43:40 -0500 Subject: [PATCH 07/15] Update FLEDGE.md --- FLEDGE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index b29f06f1b..7c9323528 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -133,8 +133,8 @@ const myGroup = { {renderUrl: gymTrainers2, sizeGroup: 'size4', ...}], 'adSizes': {'size1': {width: '100', height: '100'}, 'size2': {width: '100px', height: '200px'}, - 'size3': {width: '200sw', height: '200sw'}, - 'size4': {width: '100sh', height: '100sh'}}, + 'size3': {width: '200sw', height: '200sh'}, + 'size4': {width: '100', height: '100sh'}}, 'sizeGroups:' {'group1': ['size1', 'size2', 'size3'], 'group2': ['size3', 'size4']}, 'auctionServerRequestFlags': ['omit-ads'], From 1a4d6ae5709403583a6e80df507b5f0406184ac0 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Wed, 29 Nov 2023 20:27:24 -0500 Subject: [PATCH 08/15] Update FLEDGE.md Switch to component auction. --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 7c9323528..49d73ffb9 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the top-level auction's AuctionConfig. In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the top-level auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the top-level auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From 462c55d7986b7d60a99691a00a2cc644d71983ab Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Mon, 4 Dec 2023 13:20:57 -0500 Subject: [PATCH 09/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 49d73ffb9..6cb66887a 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "0.50sw", height: "10.0" becomes "0.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From 6be6a4dbf163c42930a4f638b132a86a60222f8a Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Mon, 4 Dec 2023 13:50:40 -0500 Subject: [PATCH 10/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index 6cb66887a..c82d068f4 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "0.50sw", height: "10.0" becomes "0.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: 62.50sw", height: "10.0" becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From 619782376ec54f9fdce8a657e7179e44cda09ff8 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Mon, 4 Dec 2023 13:51:23 -0500 Subject: [PATCH 11/15] Update FLEDGE.md --- FLEDGE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index c82d068f4..cc243d46d 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -133,8 +133,8 @@ const myGroup = { {renderUrl: gymTrainers2, sizeGroup: 'size4', ...}], 'adSizes': {'size1': {width: '100', height: '100'}, 'size2': {width: '100px', height: '200px'}, - 'size3': {width: '200sw', height: '200sh'}, - 'size4': {width: '100', height: '100sh'}}, + 'size3': {width: '75sw', height: '25sh'}, + 'size4': {width: '100', height: '25sh'}}, 'sizeGroups:' {'group1': ['size1', 'size2', 'size3'], 'group2': ['size3', 'size4']}, 'auctionServerRequestFlags': ['omit-ads'], From edb343ee6e0d402b7eb2b19678f413961023e115 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Fri, 15 Dec 2023 10:59:49 -0500 Subject: [PATCH 12/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index c538edede..2d718002e 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: 62.50sw", height: "10.0" becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "62.50sw", height: "10.0"} becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From eeedda9626e43feaba58727f4c3c55037409d532 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Fri, 15 Dec 2023 13:02:03 -0500 Subject: [PATCH 13/15] Update FLEDGE.md --- FLEDGE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index 2d718002e..199b9156f 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -595,9 +595,9 @@ Buyers have three basic jobs in the on-device ad auction: Buyers may want to make on-device decisions that take into account real-time data (for example, the remaining budget of an ad campaign). This need can be met using the interest group's `trustedBiddingSignalsURL`, `trustedBiddingSignalsKeys`, and, optionally, `trustedBiddingSignalsSlotSizeMode` fields. Once a seller initiates an on-device auction on a publisher page, the browser checks each participating interest group for these fields, and makes an uncredentialed (cookieless) HTTP fetch to a URL of the form: - https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slot-size=100,200 + https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slotSize=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "62.50sw", height: "10.0"} becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&slotSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "62.50sw", height: "10.0"} becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&allSlotsRequestedSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: From fa000eab2587ab2e2d6cdccba5d86b6826afe4ce Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Thu, 4 Jan 2024 15:48:28 -0500 Subject: [PATCH 14/15] Update FLEDGE.md --- FLEDGE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/FLEDGE.md b/FLEDGE.md index 199b9156f..a41d03cf7 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -132,9 +132,9 @@ const myGroup = { {renderUrl: gymTrainers1, sizeGroup: 'size4', ...}, {renderUrl: gymTrainers2, sizeGroup: 'size4', ...}], 'adSizes': {'size1': {width: '100', height: '100'}, - 'size2': {width: '100px', height: '200px'}, - 'size3': {width: '75sw', height: '25sh'}, - 'size4': {width: '100', height: '25sh'}}, + 'size2': {width: '100', height: '200'}, + 'size3': {width: '75', height: '25'}, + 'size4': {width: '100', height: '25'}}, 'sizeGroups:' {'group1': ['size1', 'size2', 'size3'], 'group2': ['size3', 'size4']}, 'auctionServerRequestFlags': ['omit-ads'], From 6f45465cbb6e3cae1f5bdbe18c75dbd0e0fe4041 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Fri, 5 Jan 2024 14:42:59 -0500 Subject: [PATCH 15/15] Update FLEDGE.md --- FLEDGE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FLEDGE.md b/FLEDGE.md index a41d03cf7..a83f1a41f 100644 --- a/FLEDGE.md +++ b/FLEDGE.md @@ -597,7 +597,7 @@ Buyers may want to make on-device decisions that take into account real-time dat https://www.kv-server.example/getvalues?hostname=publisher.com&keys=key1,key2&interestGroupNames=name1,name2&experimentGroupId=12345&slotSize=100,200 -The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "62.50sw", height: "10.0"} becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&allSlotsRequestedSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). +The base URL `https://www.kv-server.example/getvalues` comes from the interest group's `trustedBiddingSignalsURL`, the hostname of the top-level webpage where the ad will appear `publisher.com` is provided by the browser, `experimentGroupId` comes from `perBuyerExperimentGroupIds` if provided, `keys` is a list of `trustedBiddingSignalsKeys` strings, and `interestGroupNames` is a list of the names of the interest groups that data is being fetched for. `trustedBiddingSignalsSlotSizeMode` is one of `none` (which is the default), `slot-size`, and `all-slots-requested-sizes`. In the second case, `&slotSize=,` is appended to the URL, where width and height are the normalized width and height from the `requestedSize` of the (component) auction's AuctionConfig. "Normalized" means units are always appended, and trailing zeros are removed, so {width: "62.50sw", height: "10.0"} becomes "62.5sw,10px". In the `all-slots-requested-sizes` case, `&allSlotsRequestedSizes=,,,,...` is appended, where all sizes are taken from the (component) auction's `allSlotsRequestedSizes` value. If the corresponding value is not present in the auction configuration, no value is appended. The requests may be coalesced (for efficiency) across any number of interest groups that share a `trustedBiddingSignalsURL` and `trustedBiddingSignalsSlotSizeMode` (which means they also share an owner). The response from the server should be a JSON object of the form: