diff --git a/spec.bs b/spec.bs index 91f1d725f..738742cff 100644 --- a/spec.bs +++ b/spec.bs @@ -96,6 +96,8 @@ spec:infra; type:dfn; text:user agent margin: 1em 0; } +dl { padding-left: 1em; } + /* domintro from https://resources.whatwg.org/standard.css */ .domintro { position: relative; @@ -4212,102 +4214,101 @@ dictionary DirectFromSellerSignalsForSeller { }; -
- When non-null, the [=interest group/bidding url=]'s [=origin=] will always be [=same origin=] - with [=interest group/owner=]. -
-: bidding wasm helper url -:: Null or a [=URL=]. Lets the bidder provide computationally-expensive subroutines in WebAssembly, - in addition to JavaScript, to be driven from the JavaScript function provided by - [=interest group/bidding url=]. -- When non-null, the [=interest group/bidding wasm helper url=]'s [=origin=] will always be - [=same origin=] with [=interest group/owner=]. -
-: update url -:: Null or a [=URL=]. Provides a mechanism for the group's owner to periodically update the - attributes of the interest group. See [[#interest-group-updates]]. Must be null if - [=interest group/additional bid key=] is not null. -- When non-null, the [=interest group/update url=]'s [=origin=] will always be [=same origin=] - with [=interest group/owner=]. -
-: trusted bidding signals url -:: Null or a [=URL=]. Provide a mechanism for making real-time data available for use at bidding - time. See [=building trusted bidding signals url=]. -- When non-null, the [=interest group/trusted bidding signals url=]'s [=origin=] will always be - [=same origin=] with [=interest group/owner=]. -
-: trusted bidding signals keys -:: Null or a [=list=] of [=string=]. See [=building trusted bidding signals url=]. -: user bidding signals -:: Null or a [=string=]. Additional metadata that the owner can use during on-device bidding. -: ads -:: Null or a [=list=] of [=interest group ad=]. Contains various ads that the interest group might - show. Must be null if [=interest group/additional bid key=] is not null. -: ad components -:: Null or a [=list=] of [=interest group ad=]. Contains various ad components (or "products") that - can be used to construct ads composed of multiple pieces — a top-level ad template "container" - which includes some slots that can be filled in with specific "products". -: additional bid key -:: Null or a [=byte sequence=] of length 32. Must be null if [=interest group/ads=] or - [=interest group/update url=] is not null. The Ed25519 public key (a 256-bit EdDSA public key) - used to guarantee that this [=interest group=], if used by an additional bid for a negative - targeting, can only be used by its [=interest group/owner=]. -: joining origin -:: An [=origin=]. The top level page origin from where the interest group was joined. -: join counts -:: A [=list=] containing [=tuples=] of the day and per day join count. The day - is calculated based on UTC time. The join count is a count of the number of - times {{Navigator/joinAdInterestGroup()}} was called for this interest group on the - corresponding day. -: join time -:: A [=moment=] at which the browser joined this interest group, updated upon each join and - re-join. -: bid counts -:: A [=list=] containing [=tuples=] of the day and per day bid count. The day - is calculated based on UTC time. The bid count is a count of the number of - times the bid calculated during {{Navigator/runAdAuction()}} was greater than 0. -: previous wins -:: A [=list=] of [=previous wins=]. -: next update after -:: A [=moment=] at which the browser will permit updating this interest group. See - [[#interest-group-updates]]. - + : expiry + :: A [=moment=] at which the browser will forget about this interest group. + : owner + :: An [=origin=]. Frames that join interest groups owned by [=interest group/owner=] must either be + served from [=interest group/owner=], or another origin delegated by [=interest group/owner=] (See + [=checking interest group permissions=] for details). The [=origin/scheme=] must be "`https`". + : name + :: A [=string=]. The ([=interest group/owner=], [=interest group/name=]) tuple is a key that + uniquely defines each interest group. + : priority + :: A {{double}}, initially 0.0. Used to select which interest groups participate in an auction + when the number of interest groups are limited by {{AuctionAdConfig/perBuyerGroupLimits}}. + See [=applying interest groups limits to prioritized list=]. + : enable bidding signals prioritization + :: A [=boolean=], initially false. Being true if the interest group's priority should be + calculated using vectors from bidding signals fetch. + : priority vector + :: Null or an [=ordered map=] whose [=map/keys=] are [=strings=] and whose [=map/values=] are + {{double}}. Its dot product with the {{AuctionAdConfig/perBuyerPrioritySignals}} will be used + in place of [=interest group/priority=], if set. + : priority signals overrides + :: Null or an [=ordered map=] whose [=map/keys=] are [=strings=] and whose [=map/values=] are + {{double}}. Overrides the {{AuctionAdConfig}}'s corresponding priority signals. + : execution mode + :: "`compatibility`", "`frozen-context`", or "`group-by-origin`". + TODO: Define spec for these execution modes, link to it from here and explain these modes. + : bidding url + :: Null or a [=URL=]. The URL to fetch the buyer's JavaScript from. ++ When non-null, the [=interest group/bidding url=]'s [=origin=] will always be [=same origin=] + with [=interest group/owner=]. +
+ : bidding wasm helper url + :: Null or a [=URL=]. Lets the bidder provide computationally-expensive subroutines in WebAssembly, + in addition to JavaScript, to be driven from the JavaScript function provided by + [=interest group/bidding url=]. ++ When non-null, the [=interest group/bidding wasm helper url=]'s [=origin=] will always be + [=same origin=] with [=interest group/owner=]. +
+ : update url + :: Null or a [=URL=]. Provides a mechanism for the group's owner to periodically update the + attributes of the interest group. See [[#interest-group-updates]]. Must be null if + [=interest group/additional bid key=] is not null. ++ When non-null, the [=interest group/update url=]'s [=origin=] will always be [=same origin=] + with [=interest group/owner=]. +
+ : trusted bidding signals url + :: Null or a [=URL=]. Provide a mechanism for making real-time data available for use at bidding + time. See [=building trusted bidding signals url=]. ++ When non-null, the [=interest group/trusted bidding signals url=]'s [=origin=] will always be + [=same origin=] with [=interest group/owner=]. +
+ : trusted bidding signals keys + :: Null or a [=list=] of [=string=]. See [=building trusted bidding signals url=]. + : user bidding signals + :: Null or a [=string=]. Additional metadata that the owner can use during on-device bidding. + : ads + :: Null or a [=list=] of [=interest group ad=]. Contains various ads that the interest group might + show. Must be null if [=interest group/additional bid key=] is not null. + : ad components + :: Null or a [=list=] of [=interest group ad=]. Contains various ad components (or "products") that + can be used to construct ads composed of multiple pieces — a top-level ad template "container" + which includes some slots that can be filled in with specific "products". + : additional bid key + :: Null or a [=byte sequence=] of length 32. Must be null if [=interest group/ads=] or + [=interest group/update url=] is not null. The Ed25519 public key (a 256-bit EdDSA public key) + used to guarantee that this [=interest group=], if used by an additional bid for a negative + targeting, can only be used by its [=interest group/owner=]. + : joining origin + :: An [=origin=]. The top level page origin from where the interest group was joined. + : join counts + :: A [=list=] containing [=tuples=] of the day and per day join count. The day + is calculated based on UTC time. The join count is a count of the number of + times {{Navigator/joinAdInterestGroup()}} was called for this interest group on the + corresponding day. + : join time + :: A [=moment=] at which the browser joined this interest group, updated upon each join and + re-join. + : bid counts + :: A [=list=] containing [=tuples=] of the day and per day bid count. The day + is calculated based on UTC time. The bid count is a count of the number of + times the bid calculated during {{Navigator/runAdAuction()}} was greater than 0. + : previous wins + :: A [=list=] of [=previous wins=]. + : next update after + :: A [=moment=] at which the browser will permit updating this interest group. See + [interest group updates](#interest-group-updates).https
".
-: decision logic url
-:: A [=URL=].
- The URL to fetch the seller's JavaScript from.
- - The [=auction config/decision logic url=]'s [=origin=] will always be [=same origin=] with - [=auction config/seller=]. -
-: trusted scoring signals url -:: Null or a [=URL=]. - Provide a mechanism for making real-time data (information about a specific [=ad creative=]) available - for use at scoring time, e.g. the results of some ad scanning system. -- When non-null, the [=auction config/trusted scoring signals url=]'s [=origin=] will always be - [=same origin=] with [=auction config/seller=]. -
-: interest group buyers -:: Null or a [=list=] of [=origins=]. - Owners of interest groups allowed to participate in the auction. Each [=origin's=] [=origin/scheme=] - must be "https
".
-: auction signals
-:: Null, a [=string=], a {{Promise}}, or failure.
- Opaque JSON data passed to both sellers' and buyers' [=script runners=].
-: requested size
-:: Null or an [=ad size=], initially null.
- The size of the frame for the ad being selected by the auction.
-: seller signals
-:: Null, a [=string=], a {{Promise}}, or failure.
- Opaque JSON data passed to the seller's [=script runner=].
-: seller timeout
-:: A [=duration=] in milliseconds, initially 50 milliseconds.
- Restricts the runtime of the seller's `scoreAd()` script. If scoring does not complete before
- the timeout, the bid being scored is not considered further.
-: per buyer signals
-:: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and
- whose [=map/values=] are [=strings=].
- [=map/Keys=] are buyers and must be valid HTTPS origins. [=map/Values=] are opaque JSON data
- passed to corresponding buyer's [=script runner=].
-: per buyer timeouts
-:: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and
- whose [=map/values=] are [=durations=] in milliseconds.
- [=map/Keys=] are buyers and must be valid HTTPS origins. [=map/Values=] restrict the runtime of
- corresponding buyer's `generateBid()` script. If the timeout expires, only the bid submitted
- via `setBid()` is considered.
-: all buyers timeout
-:: A [=duration=] in milliseconds, initially 50 milliseconds.
- Restricts the `generateBid()` script's runtime for all buyers without a timeout specified in
- [=auction config/per buyer timeouts=]. If the timeout expires, only the bid submitted via
- `setBid()` is considered.
-: per buyer cumulative timeouts
-:: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and
- whose [=map/values=] are [=durations=] in milliseconds.
- [=map/Keys=] are buyers and must be valid HTTPS [=origins=]. [=map/Values=] are collective
- timeouts for all interest groups of the buyer represented by the [=map/key=]. Includes the time of
- loading scripts and signals, and running the `generateBid()` functions. Once the timer expires,
- the affected buyer's interest groups may no longer generate any bids. All bids generated before
- the timeout will continue to participate in the auction.
- Implementations should attempt, on a best-effort basis, to generate bids for each buyer in
- priority order, so lower priority [=interest groups=] are the ones more likely to be timed out. If
- {{Promise}}s are passed in to the [=auction config=] for fields that support them,
- [=wait until configuration input promises resolve=] before starting the timer.
-
-: all buyers cumulative timeout
-:: Null or a [=duration=] in milliseconds, initially null.
- Restricts a buyer's cumulative timeout for all buyers without one specified in
- [=auction config/per buyer cumulative timeouts=].
-: per buyer group limits
-:: Null or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are
- {{unsigned short}}s.
- [=map/Keys=] are buyers and must be valid HTTPS origins. [=map/Values=] restrict the number of
- bidding interest groups for a particular buyer that can participate in an auction.
-: all buyers group limit
-:: An {{unsigned short}}, initially 65535.
- Limit on the number of bidding interest groups for all buyers without a limit specified in
- [=auction config/per buyer group limits=].
-: per buyer priority signals
-:: Null or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are
- [=ordered maps=], whose [=map/keys=] are [=strings=] and whose [=map/values=] are {{double}}.
- Per-buyer sparse vector whose dot product with [=interest group/priority vector=] is used to
- calculate interest group priorities. No signal's key starts with "browserSignals.", which is
- reserved for values coming from the browser.
-: all buyers priority signals
-:: Null or an [=ordered map=] whose [=map/keys=] are [=strings=] and whose [=map/values=] are
- {{double}}.
- Merged with [=auction config/per buyer priority signals=] before calculating per-interest group
- priorities. In the case both have entries with the same key, the entry in
- `per_buyer_priority_signals` takes precedence. No signals key start with "browserSignals.", which
- is reserved for values coming from the browser.
-: component auctions
-:: A [=list=] of [=auction config=]s.
- Nested auctions whose results will also participate in a top level auction. Only the top level
- [=auction config=] can have component auctions.
-: seller experiment group id
-:: Null or an {{unsigned short}}, initially null.
- Optional identifier for an experiment group to support coordinated experiments with the seller's
- trusted server.
-: per buyer experiment group ids
-:: An [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are
- {{unsigned short}}s.
- [=map/Keys=] are buyers and must be valid HTTPS origins. [=map/Values=] are identifiers for
- experiment groups, to support coordinated experiments with buyers' trusted servers.
-: all buyer experiment group id
-:: Null or an {{unsigned short}}, initially null.
- Optional identifier for an experiment group to support coordinated experiments with buyers'
- trusted servers for buyers without a specified experiment group.
-: pending promise count
-:: An integer, initially 0. The number of things that are pending that are needed to score
- everything. It includes waiting for {{Promise}}s [=auction config/auction signals=],
- [=auction config/per buyer signals=], [=auction config/per buyer currencies=],
- [=auction config/per buyer timeouts=], [=auction config/direct from seller signals header ad slot=],
- [=auction config/seller signals=], or {{AuctionAdConfig/additionalBids}} whose {{Promise}}s are not
- yet resolved.
-: config idl
-:: {{AuctionAdConfig}}.
-: resolve to config
-:: A [=boolean=] or a {{Promise}}, initially false.
- Whether the ad should be returned as a {{FencedFrameConfig}}, or otherwise as a [=urn uuid=].
-: seller currency
-:: A [=currency tag=]. Specifies the currency bids returned by `scoreAd()` are expected to use, and
- which reporting for this auction will agree on.
-: per buyer currencies
-:: A {{Promise}} or failure or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose
- [=map/values=] are [=currency tags=]. Specifies the currency bids returned by `generateBid()` or
- `scoreAd()` in component auctions are expected to use. The initial value is an empty map.
-: all buyers currency
-:: A [=currency tag=]. Specifies the currency bids returned by `generateBid()` or `scoreAd()` in
- component auctions are expected to use if [=auction config/per buyer currencies=] does not specify
- a particular value.
-: direct from seller signals header ad slot
-:: Null, a [=string=], a {{Promise}}, or failure. Initially null.
-: auction nonce
-:: Null or a [=version 4 UUID=], initially null.
- A unique identifier associated with this and only this invocation of
- {{Window/navigator}}.{{Navigator/runAdAuction()}}. For
- multi-seller auctions, this ID is uniquely associated with all {{AuctionAdConfig/componentAuctions}}.
- This must come from a prior call to {{Window/navigator}}.{{Navigator/createAuctionNonce()}}. This
- is only required for auctions that provide additional bids, and each of those additional bids must
- use the same auction nonce to ensure that each of those additional bids was intended for this and
- only this auction.
-: expects additional bids
-:: A [=boolean=] or failure, initially false.
- Specifies whether some bids will be provided as signed exchanges. Sets to failure if the
- {{AuctionAdConfig/additionalBids}} {{Promise}} is [=rejected=].
-
+ : seller
+ :: An [=origin=].
+ The origin of the seller running the ad auction. The [=origin/scheme=] must be "`https`".
+ : decision logic url
+ :: A [=URL=].
+ The URL to fetch the seller's JavaScript from.
+ + The [=auction config/decision logic url=]'s [=origin=] will always be [=same origin=] with + [=auction config/seller=]. +
+ : trusted scoring signals url + :: Null or a [=URL=]. + Provide a mechanism for making real-time data (information about a specific [=ad creative=]) + available for use at [=evaluate a scoring script|scoring=] time, e.g. the results of some ad + scanning system. ++ When non-null, the [=auction config/trusted scoring signals url=]'s [=origin=] will always be + [=same origin=] with [=auction config/seller=]. +
+ : interest group buyers + :: Null or a [=list=] of [=origins=]. + Owners of interest groups allowed to participate in the auction. Each [=origin's=] + [=origin/scheme=] must be "`https`". + : auction signals + :: Null, a [=string=], a {{Promise}}, or failure. + Opaque JSON data passed to both sellers' and buyers' [=script runners=]. + : requested size + :: Null or an [=ad size=], initially null. + The size of the frame for the ad being selected by the auction. + : seller signals + :: Null, a [=string=], a {{Promise}}, or failure. + Opaque JSON data passed to the seller's [=script runner=]. + : seller timeout + :: A [=duration=] in milliseconds, initially 50 milliseconds. + Restricts the runtime of the seller's `scoreAd()` script. If scoring does not complete before + the timeout, the bid being scored is not considered further. + : per buyer signals + :: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and + whose [=map/values=] are [=strings=]. + [=map/Keys=] are buyers whose [=origin/schemes=] must be "`https`". [=map/Values=] are + opaque JSON data passed to corresponding buyer's [=script runner=]. + : per buyer timeouts + :: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and + whose [=map/values=] are [=durations=] in milliseconds. + [=map/Keys=] are buyers whose [=origin/schemes=] must be "`https`". [=map/Values=] restrict the + runtime of corresponding buyer's `generateBid()` script. If the timeout expires, only the bid + submitted via `setBid()` is considered. + : all buyers timeout + :: A [=duration=] in milliseconds, initially 50 milliseconds. + Restricts the `generateBid()` script's runtime for all buyers without a timeout specified in + [=auction config/per buyer timeouts=]. If the timeout expires, only the bid submitted via + `setBid()` is considered. + : per buyer cumulative timeouts + :: Null, a {{Promise}}, failure, or an [=ordered map=] whose [=map/keys=] are [=origins=] and + whose [=map/values=] are [=durations=] in milliseconds. + [=map/Keys=] are buyers whose [=origin/schemes=] must be "`https`". [=map/Values=] are collective + timeouts for all interest groups of the buyer represented by the [=map/key=]. Includes the time of + loading scripts and signals, and running the `generateBid()` functions. Once the timer expires, + the affected buyer's interest groups may no longer generate any bids. All bids generated before + the timeout will continue to participate in the auction. + Implementations should attempt, on a best-effort basis, to generate bids for each buyer in + priority order, so lower priority [=interest groups=] are the ones more likely to be timed out. If + {{Promise}}s are passed in to the [=auction config=] for fields that support them, + [=wait until configuration input promises resolve=] before starting the timer. + : all buyers cumulative timeout + :: Null or a [=duration=] in milliseconds, initially null. + Restricts a buyer's cumulative timeout for all buyers without one specified in + [=auction config/per buyer cumulative timeouts=]. + : per buyer group limits + :: Null or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are + {{unsigned short}}s. + [=map/Keys=] are buyers whose [=origin/schemes=] must be "`https`". [=map/Values=] restrict the + number of bidding interest groups for a particular buyer that can participate in an auction. + : all buyers group limit + :: An {{unsigned short}}, initially 65535. + Limit on the number of bidding interest groups for all buyers without a limit specified in + [=auction config/per buyer group limits=]. + : per buyer priority signals + :: Null or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are + [=ordered maps=], whose [=map/keys=] are [=strings=] and whose [=map/values=] are {{double}}. + Per-buyer sparse vector whose dot product with [=interest group/priority vector=] is used to + calculate interest group priorities. No signal's key starts with "browserSignals.", which is + reserved for values coming from the browser. + : all buyers priority signals + :: Null or an [=ordered map=] whose [=map/keys=] are [=strings=] and whose [=map/values=] are + {{double}}. + Merged with [=auction config/per buyer priority signals=] before calculating per-interest group + priorities. In the case both have entries with the same key, the entry in + `per_buyer_priority_signals` takes precedence. No signals key start with "browserSignals.", which + is reserved for values coming from the browser. + : component auctions + :: A [=list=] of [=auction config=]s. + Nested auctions whose results will also participate in a top level auction. Only the top level + [=auction config=] can have component auctions. + : seller experiment group id + :: Null or an {{unsigned short}}, initially null. + Optional identifier for an experiment group to support coordinated experiments with the seller's + trusted server. + : per buyer experiment group ids + :: An [=ordered map=] whose [=map/keys=] are [=origins=] and whose [=map/values=] are + {{unsigned short}}s. + [=map/Keys=] are buyers whose [=origin/schemes=] must be "`https`". [=map/Values=] are + identifiers for experiment groups, to support coordinated experiments with buyers' trusted servers. + : all buyer experiment group id + :: Null or an {{unsigned short}}, initially null. + Optional identifier for an experiment group to support coordinated experiments with buyers' + trusted servers for buyers without a specified experiment group. + : pending promise count + :: An integer, initially 0. The number of things that are pending that are needed to score + everything. It includes waiting for {{Promise}}s [=auction config/auction signals=], + [=auction config/per buyer signals=], [=auction config/per buyer currencies=], + [=auction config/per buyer timeouts=], [=auction config/direct from seller signals header ad slot=], + [=auction config/seller signals=], or {{AuctionAdConfig/additionalBids}} whose {{Promise}}s are + not yet resolved. + : config idl + :: {{AuctionAdConfig}}. + : resolve to config + :: A [=boolean=] or a {{Promise}}, initially false. + Whether the ad should be returned as a {{FencedFrameConfig}}, or otherwise as a [=urn uuid=]. + : seller currency + :: A [=currency tag=]. Specifies the currency bids returned by `scoreAd()` are expected to use, and + which reporting for this auction will agree on. + : per buyer currencies + :: A {{Promise}} or failure or an [=ordered map=] whose [=map/keys=] are [=origins=] and whose + [=map/values=] are [=currency tags=]. Specifies the currency bids returned by `generateBid()` or + `scoreAd()` in component auctions are expected to use. The initial value is an empty map. + : all buyers currency + :: A [=currency tag=]. Specifies the currency bids returned by `generateBid()` or `scoreAd()` in + component auctions are expected to use if [=auction config/per buyer currencies=] does not + specify a particular value. + : direct from seller signals header ad slot + :: Null, a [=string=], a {{Promise}}, or failure. Initially null. + : auction nonce + :: Null or a [=version 4 UUID=], initially null. + A unique identifier associated with this and only this invocation of + {{Window/navigator}}.{{Navigator/runAdAuction()}}. For multi-seller auctions, this ID is + uniquely associated with all {{AuctionAdConfig/componentAuctions}}. + This must come from a prior call to {{Window/navigator}}.{{Navigator/createAuctionNonce()}}. + This is only required for auctions that provide [=additional bids=], and each of those + [=additional bids=] must use the same auction nonce to ensure that each of them was intended for + this and only this auction. + : expects additional bids + :: A [=boolean=] or failure, initially false. + Specifies whether some bids will be provided as signed exchanges. Sets to failure if the + {{AuctionAdConfig/additionalBids}} {{Promise}} is [=rejected=].@@ -4753,8 +4738,8 @@ TODO: This also has an ad field, which should behave similar to the way {{ScoreA affects [=generated bid/modified bid=], and then affecting the adMetadata parameter to scoreAd.- To process scoreAd output given an [=ECMAScript/Completion Record=] |result|: + 1. If |result| is an an [=ECMAScript/abrupt completion=], return failure. 1. If |result|.\[[Value]] is a [=Number=]: 1. Let |checkedScore| be the result of [=converted to an IDL value|converting=] @@ -4772,62 +4757,62 @@ To process scoreAd output given an [=ECMAScript/Completion Record=] | 1. Return |resultIDL|.-Leading bid info
+Leading bid info
-Information of the auction's leading bid so far when ranking scored bids. +A leading bid info is the information of the auction's leading bid so far when ranking +scored bids.