Skip to content

Commit

Permalink
Add priority and perBuyerGroupLimits (WICG#276)
Browse files Browse the repository at this point in the history
Fixes WICG#79
  • Loading branch information
brusshamilton authored Apr 26, 2022
1 parent c3ad079 commit c00a592
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions FLEDGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ Browsers keep track of the set of interest groups that they have joined. For ea
const myGroup = {
'owner': 'https://www.example-dsp.com',
'name': 'womens-running-shoes',
'priority': 0.0,
'biddingLogicUrl': ...,
'biddingWasmHelperUrl': ...,
'dailyUpdateUrl': ...,
Expand All @@ -108,6 +109,8 @@ The browser will remain in an interest group for only a limited amount of time.

#### 1.2 Interest Group Attributes

The `priority` is used to select which interest groups participate in an auction when the number of interest groups are limited by the `perBuyerGroupLimits` attribute of the auction config. If not specified, a `priority` of `0.0` is assigned. There is no special meaning to these values. These values are only used to select interest groups to participate in an auction such that if there is an interest group participating in the auction with priority `x`, all interest groups with the same owner having a priority `y` where `y > x` should also participate (i.e. `generateBid` will be called). In the case where some but not all interest groups with equal priority can participate in an auction due to `perBuyerGroupLimits`, the participating interest groups will be uniformly randomly chosen from the set of interest groups with that priority.

The `userBiddingSignals` is for storage of additional metadata that the owner can use during on-device bidding, and the `trustedBiddingSignals*` attributes provide another mechanism for making real-time data available for use at bidding time.

The `biddingWasmHelperUrl` field is optional, and lets the bidder provide computationally-expensive subroutines in WebAssembly, rather than JavaScript, to be driven from the JavaScript function provided by `biddingLogicUrl`. If provided, it must point to a WebAssembly binary, delivered with a `application/wasm` mimetype. The corresponding `WebAssembly.Module` will be made available by the browser to the `generateBid` function.
Expand Down Expand Up @@ -155,6 +158,10 @@ const myAuctionConfig = {
'https://www.another-buyer.com': 200,
'*': 150,
...},
'perBuyerGroupLimits': {'https://www.example-dsp.com': 2,
'https://www.another-buyer.com': 1000,
'*': 15,
...},
'componentAuctions': [
{'seller': 'https://www.some-other-ssp.com',
'decisionLogicUrl': ...,
Expand All @@ -174,6 +181,8 @@ The returned `auctionResultPromise` object is _opaque_: it is not possible for a

Optionally, `sellerTimeout` can be specified to restrict the runtime (in milliseconds) of the seller's `scoreAd()` script, and `perBuyerTimeouts` can be specified to restrict the runtime (in milliseconds) of particular buyer's `generateBid()` scripts. If no value is specified for the seller or a particular buyer, a default timeout of 50 ms will be selected. Any timeout higher than 500 ms will be clamped to 500 ms. A key of `'*'` in `perBuyerTimeouts` is used to change the default of unspecified buyers.

Optionally, `perBuyerGroupLimits` can be specified to limit the number of of interest groups from a particular buyer that participate in the auction. A key of `'*'` in `perBuyerGroupLimits` is used to set a limit for unspecified buyers. For each buyer, interest groups will be selected to participate in the auction in order of decreasing `priority` (larger priorities are selected first) up to the specfied limit. The selection of interest groups occurs independently for each buyer, so the priorities do not need to be comparable between buyers and could have a buyer-specific meaning. The value of the limits provided should be able to be represented by a 16 bit unsigned integer.

A `Permissions-Policy` directive named "run-ad-auction" controls access to the `navigator.runAdAuction()` API.

In the case of a component auction, all `AuctionConfig` parameters for that component auction are only scoped to buyer and seller scripts run as part of that auction component. Similarly, all vaues specified by the top-level auction are not applied to the component auctions.
Expand Down

0 comments on commit c00a592

Please sign in to comment.