Skip to content

Commit 3f7428b

Browse files
authored
Merge branch 'master' into master
2 parents 7bcabc6 + aa1daab commit 3f7428b

72 files changed

Lines changed: 697 additions & 142 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Agent Guidelines
2+
3+
- Run `markdownlint` on any edited Markdown files using the repository configuration with `markdownlint --config .markdownlint.json README.md`. Replace `README.md` with each file you change.
4+
- If lint errors occur, fix them before creating a pull request.
5+
- Verify the site builds with `bundle exec jekyll build` when possible.
6+
- Please name your branch to include codex or agent in the branch name
7+
- If you cannot run markdownlint please warn your user to setup their environment using the instructions in README.md and document your failure in your pr description

README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,26 @@ This means an adaptor is not available to download from Prebid.org as soon as th
112112

113113
* [jekyll - check for non empty](https://michaelcurrin.github.io/dev-cheatsheets/cheatsheets/jekyll/liquid/conditionals/non-empty.html)
114114

115+
## Codex
116+
117+
To get started with Codex with Ruby 3.4.4 preinstalled on this repo, you can set up your environment like this
118+
119+
```bash
120+
echo "3.4.4" > .ruby-version
121+
export NOKOGIRI_USE_SYSTEM_LIBRARIES=1
122+
gem install jekyll bundler
123+
npm install boostrap
124+
gem install github-pages --no-document --force
125+
npm install -g markdownlint-cli
126+
bundle install
127+
```
128+
129+
Codex can then check for linting success with
130+
131+
```bash
132+
markdownlint --config .markdownlint.json "**/*.md"
133+
```
134+
115135
## Thanks
116136

117137
Many thanks to the following people who have submitted content to Prebid.org. We really appreciate the help!
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
# Default Keyword Targeting
2+
13
{: .table .table-bordered .table-striped }
2-
| Default Key | Scope | Description | Example |
3-
| :---- |:---- | :---- | :---- |
4-
| `hb_pb` | Required | The price bucket. Used by the line item to target. | `2.10` |
5-
| `hb_adid` | Required | The ad Id. Used by the ad server creative to render ad. | `234234` |
6-
| `hb_bidder` | Required | The bidder code. Used for logging and reporting to learn which bidder has higher fill rate/CPM. | `rubicon` |
74

5+
| Default Key | Scope | Description | Example |
6+
| :---- |:---- | :---- | :---- |
7+
| `hb_pb` | Required | The price bucket. Used by the line item to target. | `2.10` |
8+
| `hb_adid` | Required | The ad Id. Used by the ad server creative to render ad. | `234234` |
9+
| `hb_bidder` | Required | The bidder code. Used for logging and reporting to learn which bidder has higher fill rate/CPM. | `rubicon` |

_includes/dev-docs/bidder-meta-data.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,27 @@
5454
<td class="pbTd">{% if page.fpd_supported == true %}yes{% elsif page.fpd_supported == false %}no{% else %}check with bidder{% endif %}</td>
5555
</tr>
5656
<tr>
57-
<th class="pbTh">User IDs</th>
58-
<td class="pbTd">{% if page.userIds and page.userIds != '' %}{{page.userIds}}{% else %}none{% endif %}</td>
57+
<th class="pbTh">Endpoint Compression</th>
58+
<td class="pbTd">{% if page.endpoint_compression == true %}yes{% elsif page.endpoint_compression == false %}no{% else %}check with bidder{% endif %}</td>
5959
<th class="pbTh">ORTB Blocking Support</th>
6060
<td class="pbTd">{% if page.ortb_blocking_supported == true %}yes{% elsif page.ortb_blocking_supported == false %}no{% elsif page.ortb_blocking_supported == 'partial' %}partial{% else %}check with bidder{% endif %}</td>
6161
</tr>
6262
<tr>
63+
<th class="pbTh">User IDs</th>
64+
<td class="pbTd">{% if page.userIds and page.userIds != '' %}{{page.userIds}}{% else %}none{% endif %}</td>
6365
<th class="pbTh">Privacy Sandbox</th>
6466
<td class="pbTd">{% if page.privacy_sandbox %}{{page.privacy_sandbox}}{% else %}check with bidder{% endif %}</td>
67+
</tr>
68+
<tr>
6569
{% if page.pbs == true %}
6670
<th class="pbTh">Prebid Server App Support</th>
6771
<td class="pbTd">{% if page.pbs_app_supported == false %}no{% elsif page.pbs_app_supported == true %}yes{% else %}check with bidder{% endif %}</td>
6872
{% else %}
6973
<th class="pbTh"></th>
7074
<td class="pbTd"></td>
7175
{% endif %}
76+
<th class="pbTh"></th>
77+
<td class="pbTd"></td>
7278
</tr>
7379

7480
</table>
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
# Send-All-Bids Keyword Targeting
2+
13
**Important:** Google Ad Manager has a key-value key character [limit](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values) of up to **20 characters**. Some of the keys without truncation will exceed 20 chars. Prebid.js automatically truncates the key length to 20 characters. For example, `hb_adid_longBidderName` is truncated to `hb_adid_longBidderNa` (`me` is truncated). Note that the key is case-sensitive. To get the exact key-value keys for each bidder, find them at [Bidder Params](/dev-docs/bidders.html).
24

35
{: .table .table-bordered .table-striped }
4-
| Default Key | Scope | Description | Example |
5-
| :---- |:---- | :---- | :---- |
6-
| `hb_pb_BIDDERCODE` | Required | The price bucket. Used by the line item to target. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_pb_rubicon` = `2.10` |
7-
| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_longBidderNa` = `234234` |
6+
7+
| Default Key | Scope | Description | Example |
8+
| :---- | :---- | :---- | :---- |
9+
| `hb_pb_BIDDERCODE` | Required | The price bucket. Used by the line item to target. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_pb_rubicon` = `2.10` |
10+
| `hb_adid_BIDDERCODE` | Required | The ad Id. Used by the ad server creative to render ad. Case sensitive and truncated to 20 chars. The `BIDDERCODE` is documented at [Bidder Params](/dev-docs/bidders.html). | `hb_adid_longBidderNa` = `234234` |
811
| `hb_size_BIDDERCODE` | Optional | This is not required for adops. Case sensitive and truncated to 20 chars. | `hb_size_appnexus` = `300x250` |

_includes/video/pb-os-dfp.html

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,14 @@
4848
if (pbjs.initAdserverSet) return;
4949
pbjs.initAdserverSet = true;
5050
googletag.cmd.push(function () {
51-
pbjs.que.push(function () {
52-
pbjs.setTargetingForGPTAsync();
51+
if (pbjs.libLoaded) {
52+
pbjs.que.push(function () {
53+
pbjs.setTargetingForGPTAsync();
54+
googletag.pubads().refresh();
55+
});
56+
} else {
5357
googletag.pubads().refresh();
54-
});
58+
}
5559
});
5660
}
5761

adops/setting-up-prebidjs-with-Smart-Ad-Server.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ Proceed as follows:
3939
- Make sure you specify the timeout; the timeout is the maximum time to wait until the Smart AdServer ad call is executed - even if some partners have not responded yet.
4040
- Implement the Prebid.js file on the site.
4141

42-
This step is also documented [here](https://support.smartadserver.com/s/article/Holistic-Setup#implement-wrapper).
42+
This step is also documented [Smart AdServer setup documentation](https://support.smartadserver.com/s/article/Holistic-Setup#implement-wrapper).
4343

4444
### Step 2 - Implement Smart AdServer’s tag
4545

4646
Smart AdServer’s OneCall tagging is strongly recommended. With OneCall, you can set header bidding data per `tagId`. The `tagId` is the Id of the container (`<div>`), where the ad will be displayed. The `tagId` format is `sas_<formatId>`. e.g. `sas_1234`.
4747

4848
Make sure you use Smart AdServer’s **new OneCall tagging**, which uses POST requests with all the necessary information in the request body; simply check if you see the `formats` array in your tag. If you see `formatId`, you are still dealing with an old tag - in this case, get back to your service contact at Smart AdServer.
4949

50-
For samples of both the new and legacy OneCall as well as a full implementation example, read [here](https://support.smartadserver.com/s/article/Holistic-Setup#onecall).
50+
For samples of both the new and legacy OneCall as well as a full implementation example, read [OneCall documentation](https://support.smartadserver.com/s/article/Holistic-Setup#onecall).
5151

5252
**Additional resources**:
5353

@@ -63,7 +63,7 @@ Things to keep in mind for the Setup in [Smart AdServer’s UI](https://manage.s
6363
- The Holistic+ feature must be enabled on the network.
6464
- You must use the official and Holistic RTB+ script templates in the insertions.
6565

66-
For more details, read [here](https://support.smartadserver.com/s/article/Holistic-Setup#setup-ui).
66+
For more details, read [setup instructions](https://support.smartadserver.com/s/article/Holistic-Setup#setup-ui).
6767

6868
### Step 4 - Get reporting
6969

dev-docs/activity-controls.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ If `allow` is not defined, the rule is assumed to assert **true** (i.e. allow th
235235

236236
#### Always include a particular bidder in auctions
237237

238-
This is similiar to the 'vendor exception' feature of the [TCF Control Module](/dev-docs/modules/tcfControl.html). This would always allow bidderA to participate in the auction, even without explicit consent in GDPR scenarios. It might indicate, for instance, that this is a 'first party bidder'.
238+
This is similar to the 'vendor exception' feature of the [TCF Control Module](/dev-docs/modules/tcfControl.html). This would always allow bidderA to participate in the auction, even without explicit consent in GDPR scenarios. It might indicate, for instance, that this is a 'first party bidder'.
239239

240240
```javascript
241241
pbjs.setConfig({

dev-docs/bidder-adaptor.md

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ Prebid.js core now includes support for gzip compression of bidder request paylo
278278
Prebid will pass compressed payloads if the following criteria are met:
279279

280280
* Participating bidders must implement compression support on their server-side endpoint before making a change in their bid adapter in Prebid.js
281-
* Once server-side support is present, `request.options.endpointCompression = true` needs to be set for a bidder's outgoing requests within their Prebid.js bid adapter (An example of this can be viewed [here](https://github.com/prebid/Prebid.js/blob/master/modules/pubmaticBidAdapter.js#L730))
281+
* Once server-side support is present, `request.options.endpointCompression = true` needs to be set for a bidder's outgoing requests within their Prebid.js bid adapter (see the [PubMatic adapter example](https://github.com/prebid/Prebid.js/blob/master/modules/pubmaticBidAdapter.js#L730))
282282
* The browser must support gzip compression (Prebid core has a built-in utility function to check this)
283283

284284
If the above criteria is met, Prebid.js core will do the following:
@@ -389,6 +389,7 @@ When disabled, `auctionId`/`transactionId` are set to `null`; `ortb2.source.tid`
389389
There are a number of important values that a publisher expects to be handled in a standard way across all Prebid.js adapters:
390390

391391
{: .table .table-bordered .table-striped }
392+
392393
| Parameter | Description | Example |
393394
| ----- | ------------ | ---------- |
394395
| Ad Server Currency | If your endpoint supports responding in different currencies, read this value. | config.getConfig('currency.adServerCurrency') |
@@ -423,6 +424,7 @@ You shouldn't call your bid endpoint directly. Rather, the end result of your bu
423424
ServerRequest objects. These objects have this structure:
424425

425426
{: .table .table-bordered .table-striped }
427+
426428
| Attribute | Type | Description | Example Value |
427429
|-----------+------------------+--------------------------------------------------------------------+-----------------------------|
428430
| `method` | String | Which HTTP method should be used. | `POST` |
@@ -504,6 +506,7 @@ particularly useful. Publishers may have analytics or security vendors with the
504506
The parameters of the `bidResponse` object are:
505507

506508
{: .table .table-bordered .table-striped }
509+
507510
| Key | Scope | Description | Example |
508511
|--------------+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------|
509512
| `requestId` | Required | The bid ID that was sent to `spec.buildRequests` as `bidRequests[].bidId`. Used to tie this bid back to the request. | 12345 |
@@ -650,7 +653,7 @@ Sample data received by this function:
650653

651654
The `onBidBillable` function will be called when it deems a bid to be billable. When a bid wins, it is by default also billable. That is, by default, onBidWon and onBidBillable will be called one after the other. However, a publisher can flag adUnits as being separately billable: `pbjs.addAdUnits({deferBilling: true, ...})`. Winning bids for adUnits with `deferBilling` set to true, trigger the onBidWon function but not the onBidBillable function. When appropriate (e.g. an interstitial is displayed), the publisher may then call the public API method, `pbjs.triggerBilling(winningBidObjectToBill)` passing the winning bid to be billed, which will trigger onBidBillable.
652655

653-
Sample data received by this function (same as what is recieved for onBidWon):
656+
Sample data received by this function (same as what is received for onBidWon):
654657

655658
```javascript
656659
{
@@ -760,6 +763,7 @@ spec.aliases can be an array of strings or objects.
760763
If the alias entry is an object, the following attributes are supported:
761764

762765
{: .table .table-bordered .table-striped }
766+
763767
| Name | Scope | Description | Type |
764768
|-------|-------|---------------|-----------|
765769
| `code` | required | shortcode/partner name | `string` |
@@ -814,7 +818,7 @@ If your adapter supports banner and video media types, make sure to include `'ba
814818

815819
### Step 2: Accept video parameters and pass them to your server
816820

817-
Video parameters are often passed in from the ad unit in a `video` object. As of Prebid 4.0 the following paramters should be read from the ad unit when available; bidders can accept overrides of the ad unit on their bidder configuration parameters but should read from the ad unit configuration when their bidder parameters are not set. Parameters one should expect on the ad unit include:
821+
Video parameters are often passed in from the ad unit in a `video` object. As of Prebid 4.0 the following parameters should be read from the ad unit when available; bidders can accept overrides of the ad unit on their bidder configuration parameters but should read from the ad unit configuration when their bidder parameters are not set. Parameters one should expect on the ad unit include:
818822

819823
* mimes
820824
* minduration
@@ -962,7 +966,7 @@ Adapter must add following new properties to bid response
962966
}
963967
```
964968

965-
Appnexus Adapter uses above explained approach. You can refer [here](https://github.com/prebid/Prebid.js/blob/master/modules/appnexusBidAdapter.js)
969+
Appnexus Adapter uses the approach explained above. You can see an example in the [AppNexus adapter](https://github.com/prebid/Prebid.js/blob/master/modules/appnexusBidAdapter.js)
966970

967971
Adapter must return one [IAB accepted subcategories](https://iabtechlab.com/wp-content/uploads/2017/11/IAB_Tech_Lab_Content_Taxonomy_V2_Final_2017-11.xlsx) (links to MS Excel file) if they want to support competitive separation. These IAB sub categories will be converted to Ad server industry/group. If adapter is returning their own proprietary categroy, it is the responsibility of the adapter to convert their categories into [IAB accepted subcategories](https://iabtechlab.com/wp-content/uploads/2017/11/IAB_Tech_Lab_Content_Taxonomy_V2_Final_2017-11.xlsx) (links to MS Excel file).
968972

@@ -971,6 +975,7 @@ If the demand partner is going to use Prebid API for this process, their adapter
971975
**Params**
972976

973977
{: .table .table-bordered .table-striped }
978+
974979
| Key | Scope | Description | Example |
975980
|-----------------|----------|----------------------------------------------------------------------------------------------------|----------------------------|
976981
| `url` | Required | The URL to the mapping file. | `"//example.com/mapping.json"` |
@@ -1000,6 +1005,7 @@ getIabSubCategory(bidderCode, pCategory)
10001005
**Params**
10011006

10021007
{: .table .table-bordered .table-striped }
1008+
10031009
| Key | Scope | Description | Example |
10041010
|--------------|----------|-----------------------------------------------|-----------------------|
10051011
| `bidderCode` | Required | BIDDER_CODE defined in spec. | `"sample-biddercode"` |
@@ -1166,16 +1172,16 @@ export const spec = {
11661172
* Determines whether or not the given bid request is valid.
11671173
*
11681174
* @param {BidRequest} bid The bid params to validate.
1169-
* @return boolean True if this is a valid bid, and false otherwise.
1175+
* @return {boolean} True if this is a valid bid, and false otherwise.
11701176
*/
11711177
isBidRequestValid: function(bid) {
11721178
return !!(bid.params.placementId || (bid.params.member && bid.params.invCode));
11731179
},
11741180
/**
11751181
* Make a server request from the list of BidRequests.
11761182
*
1177-
* @param {validBidRequests[]} - an array of bids
1178-
* @return ServerRequest Info describing the request to the server.
1183+
* @param {BidRequest[]} validBidRequests - an array of bids
1184+
* @return {ServerRequest} Info describing the request to the server.
11791185
*/
11801186
buildRequests: function(validBidRequests) {
11811187
const payload = {
@@ -1260,31 +1266,31 @@ export const spec = {
12601266

12611267
/**
12621268
* Register bidder specific code, which will execute if bidder timed out after an auction
1263-
* @param {data} Containing timeout specific data
1269+
* @param {Object} data Containing timeout specific data
12641270
*/
12651271
onTimeout: function(data) {
12661272
// Bidder specifc code
12671273
}
12681274

12691275
/**
12701276
* Register bidder specific code, which will execute if a bid from this bidder won the auction
1271-
* @param {Bid} The bid that won the auction
1277+
* @param {Bid} bid The bid that won the auction
12721278
*/
12731279
onBidWon: function(bid) {
12741280
// Bidder specific code
12751281
}
12761282

12771283
/**
12781284
* Register bidder specific code, which will execute when the adserver targeting has been set for a bid from this bidder
1279-
* @param {Bid} The bid of which the targeting has been set
1285+
* @param {Bid} bid The bid of which the targeting has been set
12801286
*/
12811287
onSetTargeting: function(bid) {
12821288
// Bidder specific code
12831289
}
12841290

12851291
/**
12861292
* Register bidder specific code, which will execute if the bidder responded with an error
1287-
* @param {error, bidderRequest} An object with the XMLHttpRequest error and the bid request object
1293+
* @param {Object} params An object with the XMLHttpRequest error and the bid request object
12881294
*/
12891295
onBidderError: function({ error, bidderRequest }) {
12901296
// Bidder specific code
@@ -1293,7 +1299,7 @@ export const spec = {
12931299
/**
12941300
* Register bidder specific code, which will execute if the ad
12951301
* has been rendered successfully
1296-
* @param {bid} bid request object
1302+
* @param {Bid} bid Bid request object
12971303
*/
12981304
onAdRenderSucceeded: function(bid) {
12991305
// Bidder specific code
@@ -1370,6 +1376,7 @@ The Example Bidding adapter requires setup before beginning. Please contact us a
13701376
### Bid Params
13711377

13721378
{: .table .table-bordered .table-striped }
1379+
13731380
| Name | Scope | Description | Example | Type |
13741381
|---------------|----------|-----------------------|-----------|-----------|
13751382
| `placement` | required | Placement id | `'11111'` | `string` |

0 commit comments

Comments
 (0)