+
+## Full List
+
+### #-A
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "0" or firstletter == "1" or firstletter == "2" or firstletter == "3" or firstletter == "4" or firstletter == "5" or firstletter == "6" or firstletter == "7" or firstletter == "8" or firstletter == "9" or firstletter == "a" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
+
+### B-C
+
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "b" or firstletter == "c" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
+
+### D-G
+
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "d" or firstletter == "e" or firstletter == "f" or firstletter == "g" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
+
+### H-L
+
+
{% for page in analytics_pages %}
--
-{{ page.title }}
-
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "h" or firstletter == "i" or firstletter == "j" or firstletter == "k" or firstletter == "l" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
{% endfor %}
-## Analytics Adapter Documentation
+### M-O
+
+
+### P-R
+
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "p" or firstletter == "q" or firstletter == "r" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
+
+### S-T
+
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "s" or firstletter == "t" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
+
+### U-Z
+
+
+{% for page in analytics_pages %}
+ {% assign firstletter = page.title | slice:0 | downcase %}
+ {% unless firstletter == "u" or firstletter == "v" or firstletter == "w" or firstletter == "x" or firstletter == "y" or firstletter == "z" %}{% continue %}{% endunless %}
+ -
+ {{ page.title }}
+
+{% endfor %}
+
## Related Topics
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
index cca7f118a0..b5f360f20e 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-admob.md
@@ -186,9 +186,11 @@ Now you should just make a regular AdMob's ad request. Evetything else will be h
Once you receive the ad it will be ready for display. You can show interstitial right in the listener or later according to the app logic.
-### Rewarded Video
+### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+#### Integration example
```kotlin
// 1. Create AsRequest
@@ -230,32 +232,32 @@ adUnit?.fetchDemand { result ->
}
```
-#### Step 1: Create AdRequest
+##### Step 1: Create AdRequest
{:.no_toc}
This step is the same as for the original [AdMob integration](https://developers.google.com/admob/android/rewarded). You don't have to make any modifications here.
-#### Step 2: Create AdMobRewardedMediationUtils
+##### Step 2: Create AdMobRewardedMediationUtils
{:.no_toc}
The `AdMobRewardedMediationUtils` is a helper class, which performs certain utilty work for the `MediationInterstitialAdUnit`, like passing the targeting keywords to adapters.
-#### Step 3: Create MediationRewardedVideoAdUnit
+##### Step 3: Create MediationRewardedVideoAdUnit
{:.no_toc}
The `MediationRewardedVideoAdUnit` is part of the prebid mediation API. This class is responsible for making bid request and managing the winning bid.
-#### Step 4: Make a bid request
+##### Step 4: Make a bid request
{:.no_toc}
The `fetchDemand` method makes a bid request to the prebid server and provides a result in a completion handler.
-#### Step 5: Make an ad request
+##### Step 5: Make an ad request
{:.no_toc}
Now you should just make a regular AdMob's ad request. Evetything else will be handled by GMA SDK and prebid adapters.
-#### Step 6: Display an ad
+##### Step 6: Display an ad
{:.no_toc}
Once you receive the ad it will be ready for display. You can show interstitial right in the listener or later according to the app logic.
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
index 502a9d6629..72600a491d 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-gam.md
@@ -215,9 +215,13 @@ Integration:
4. Remove the original `InterstitialAdUnit`.
5. Follow the instructions to integrate [Interstitial API](#interstitials).
-### Rewarded Video
+### Rewarded
-To display a Rewarded Ad follow these steps:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+#### Integration example
+
+Displaying the **Rewarded Ad** is the same as displaying an Interstitial Ad, but it adds ability to handle reward. To display a Rewarded Ad follow these steps:
```kotlin
// 1. Create a rewarded custom event handler for GAM ad server.
@@ -243,21 +247,7 @@ Pay attention that the `loadAd()` should be called on the main thread.
{% endcapture %}
{% include /alerts/alert_warning.html content=warning_note %}
-Displaying the **Rewarded Ad** is the same as displaying an Interstitial Ad. The type of ad can be customized to:
-
-Be notified when user earns a reward - implement `RewardedAdUnitListener` interface:
-
-```kotlin
- fun onUserEarnedReward(rewardedAdUnit: RewardedAdUnit)
-```
-
-When the actual reward object is stored in the `RewardedAdUnit`:
-
-```kotlin
-val reward = rewardedAdUnit.getUserReward()
-```
-
-#### Step 1: Create Event Handler
+##### Step 1: Create Event Handler
{:.no_toc}
GAM's event handlers are special containers that wrap the GAM Ad Views and help to manage collaboration between GAM and Prebid views.
@@ -266,7 +256,7 @@ GAM's event handlers are special containers that wrap the GAM Ad Views and help
To create an event handler you should provide a GAM Ad Unit.
-#### Step 2: Create Rewarded Ad Unit
+##### Step 2: Create Rewarded Ad Unit
{:.no_toc}
**RewardedAdUnit** - is an object that will load and display the particular ad. To create it you should provide
@@ -276,12 +266,12 @@ To create an event handler you should provide a GAM Ad Unit.
You can also assign the listener for processing ad events.
-#### Step 3: Load the Ad
+##### Step 3: Load the Ad
{:.no_toc}
Call the `loadAd()` method to make a bid request. The ad unit will load an ad and will wait for explicit instructions to display the Rewarded Ad.
-#### Step 4: Display the Ad when it is ready
+##### Step 4: Display the Ad when it is ready
{:.no_toc}
The most convenient way to determine if the ad is ready for displaying is to listen for the listener method:
@@ -292,7 +282,23 @@ override fun onAdLoaded(rewardedAdUnit: RewardedAdUnit) {
}
```
-### Migrating rewarded video from a Bidding-Only integration
+##### Step 5: Handle a reward
+{:.no_toc}
+
+Handle earning the reward in the appropriate method. Important: a reward can be null.
+
+```kotlin
+override fun onUserEarnedReward(rewardedAdUnit: RewardedAdUnit?, reward: Reward?) {
+ if (reward != null) {
+ val rewardType = reward.type
+ val rewardCount = reward.count
+ val rewardExt = reward.ext
+ // Process the reward
+ }
+}
+```
+
+#### Migrating rewarded video from a Bidding-Only integration
{:.no_toc}
GAM setup:
@@ -306,7 +312,7 @@ Integration:
1. Replace the `RewardedAd` with `RewardedAdUnit`.
2. Implement the interface for `RewardedAdUnitListener`.
3. Remove the original `RewardedVideoAdUnit`.
-4. Follow the instructions to integrate [Rewarded API](#rewarded-video).
+4. Follow the instructions to integrate [Rewarded API](#rewarded).
## Additional Ad Unit Configuration
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-max.md b/prebid-mobile/modules/rendering/android-sdk-integration-max.md
index 715d7830a2..a8fa703109 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-max.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-max.md
@@ -161,9 +161,11 @@ Now you should make a regular MAX's ad request. Everything else will be handled
Once you receive the ad it will be ready for display. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/android/getting-started/interstitials#showing-an-interstitial-ad) about how to do it.
-### Rewarded Video
+### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+#### Integration example
```kotlin
// 1. Get an instance of MaxRewardedAd
@@ -192,35 +194,36 @@ The way of displaying the rewarded ad is the same as for the Interstitial Ad.
To be notified when user earns a reward follow the [MAX intructions](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads#accessing-the-amount-and-currency-for-a-rewarded-ad).
-#### Step 1: Get an instance of MaxRewardedAd
+##### Step 1: Get an instance of MaxRewardedAd
{:.no_toc}
This step is totally the same as for original [MAX integration](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads). You don't have to make any modifications here.
-#### Step 2: Create MaxMediationRewardedUtils
+##### Step 2: Create MaxMediationRewardedUtils
{:.no_toc}
The `MaxMediationRewardedUtils` is a helper class, which performs certain utilty work for the `MediationRewardedVideoAdUnit`, like passing the targeting keywords to the adapters.
-#### Step 3: Create MediationRewardedVideoAdUnit
+##### Step 3: Create MediationRewardedVideoAdUnit
{:.no_toc}
The `MediationRewardeVideoAdUnit` is part of the prebid mediation API. This class is responsible for making a bid request and providing a winning bid and targeting keywords to the adapters.
-#### Step 4: Make bid request
+##### Step 4: Make bid request
{:.no_toc}
The `fetchDemand` method makes a bid request to the prebid server and provides a result in a completion handler.
-#### Step 5: Make an Ad Reuest
+##### Step 5: Make an Ad Reuest
{:.no_toc}
Now you should make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
-#### Steps 6: Display an ad
+##### Steps 6: Display an ad
{:.no_toc}
Once the rewarded ad is received you can display it. Folow the [MAX instructions](https://dash.applovin.com/documentation/mediation/android/getting-started/rewarded-ads#showing-a-rewarded-ad) for the details.
+
### Native Ads
Integration example:
diff --git a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
index 6d6334cc88..9d4ac0ca65 100644
--- a/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
+++ b/prebid-mobile/modules/rendering/android-sdk-integration-pb.md
@@ -192,9 +192,11 @@ override fun onAdLoaded(interstitialAdUnit: InterstitialAdUnit) {
}
```
-#### Rewarded Video
+#### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+##### Integration example
``` kotlin
// 1. Create an Ad Unit
@@ -215,19 +217,19 @@ Pay attention that the `loadAd()` should be called on the main thread.
{% endcapture %}
{% include /alerts/alert_warning.html content=warning_note %}
-##### Step 1: Create a Rewarded Ad Unit
+###### Step 1: Create a Rewarded Ad Unit
{:.no_toc}
Create the `RewardedAdUnit` object with parameters:
- `adUnitId` - an ID of Stored Impression on the Prebid server.
-##### Step 2: Load the Ad
+###### Step 2: Load the Ad
{:.no_toc}
Call the `loadAd()` to make a bid request.
-##### Step 3: Show the Ad when it is ready
+###### Step 3: Show the Ad when it is ready
{:.no_toc}
Wait until the ad is loaded and present it to the user in any suitable time.
@@ -238,6 +240,22 @@ override fun onAdLoaded(rewardedAdUnit: RewardedAdUnit) {
}
```
+##### Step 4: Handle a reward
+{:.no_toc}
+
+Handle earning a reward in the appropriate method. Important: a reward can be null.
+
+```kotlin
+override fun onUserEarnedReward(rewardedAdUnit: RewardedAdUnit?, reward: Reward?) {
+ if (reward != null) {
+ val rewardType = reward.type
+ val rewardCount = reward.count
+ val rewardExt = reward.ext
+ // Process the reward
+ }
+}
+```
+
## Additional Ad Unit Configuration
{% include mobile/rendering-adunit-config-android.md %}
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md b/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
index cc899357b9..4d0cab980d 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-admob.md
@@ -235,7 +235,9 @@ Make a regular AdMob's ad request. Everything else will be handled by GMA SDK an
Once you receive the ad it will be ready for display. Follow the [AdMob instructions](https://developers.google.com/admob/ios/interstitial#swift) for displaying an ad.
-### Rewarded Video
+### Rewarded
+
+{% include mobile/rewarded-server-side-configuration.md %}
**Integration example(Swift)**:
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
index d6198673c1..1075aa4747 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-gam.md
@@ -185,7 +185,7 @@ Call the method `loadAd()` which will make a bid request to Prebid Server.
Wait for the Prebid Server to return an ad and show it to the user in any suitable time.
```swift
-// MARK: InterstitialRenderingAdUnitDelegate
+// MARK: InterstitialAdUnitDelegate
func interstitialDidReceiveAd(_ interstitial: InterstitialAdUnit) {
// Now the ad is ready for display
@@ -208,9 +208,11 @@ Integration:
4. Remove original `InterstitialAdUnit`.
5. Follow the instructions to integrate [Interstitial API](#interstitials).
-### Rewarded Video
+### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+#### Integration example
```swift
// 1. Create an Event Handler
@@ -238,9 +240,12 @@ The proccess for displaying the Rewarded Ad is the same as for the Interstitial
To be notified when a user earns a reward - implement the method of `RewardedAdUnitDelegate`:
```swift
-- (void)rewardedAdUserDidEarnReward:(RewardedAdUnit *)rewardedAd;
+func rewardedAdUserDidEarnReward(_ rewardedAd: RewardedAdUnit, reward: PrebidReward) {}
```
+##### Step 1: Create Event Handler
+{:.no_toc}
+
The reward object is stored in the `RewardedAdUnit`:
{% capture gma12 %}if let reward = rewardedAd.reward as? GoogleMobileAds.AdReward {
@@ -254,12 +259,9 @@ The reward object is stored in the `RewardedAdUnit`:
{% include code/gma-versions-tabs.html id="gam-reward" gma11=gma11 gma12=gma12 %}
-#### Step 1: Create Event Handler
-{:.no_toc}
-
To create an event handler you should provide a **GAM Ad Unit ID**.
-#### Step 2: Create Rewarded Ad Unit
+##### Step 2: Create Rewarded Ad Unit
{:.no_toc}
Create the `RewardedAdUnit` object with parameters:
@@ -267,12 +269,12 @@ Create the `RewardedAdUnit` object with parameters:
- `configID` - an ID of Stored Impression on the Prebid server
- `eventHandler` - the instance of rewarded event handler
-#### Step 3: Load the Ad
+##### Step 3: Load the Ad
{:.no_toc}
Call the `loadAd()` method which will make a bid request to Prebid server.
-#### Step 4: Show the Ad when it is ready
+##### Step 4: Show the Ad when it is ready
{:.no_toc}
Wait for the ad to load and display it to the user in any suitable time.
@@ -285,6 +287,23 @@ func rewardedAdDidReceiveAd(_ rewardedAd: RewardedAdUnit) {
}
```
+###### Step 4: Handle the reward
+{:.no_toc}
+
+Handle the reward in the appropriate method.
+
+``` swift
+// MARK: RewardedAdUnitDelegate
+
+func rewardedAdUserDidEarnReward(_ rewardedAd: RewardedAdUnit, reward: PrebidReward) {
+ let type = reward.type
+ let count = reward.count
+ let ext = reward.ext
+
+ // Process the reward
+}
+```
+
#### Migrating Rewarded Video from a Bidding-Only integration
GAM setup:
@@ -299,7 +318,7 @@ Integration:
2. Implement the protocol `RewardedAdUnitDelegate` in the View Controller.
3. Remove usage of `AdManagerRequest`.
4. Remove original `RewardedVideoAdUnit`.
-5. Follow the instructions to integrate [Rewarded API](#rewarded-video).
+5. Follow the instructions to integrate [Rewarded API](#rewarded).
## Additional Ad Unit Configuration
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-max.md b/prebid-mobile/modules/rendering/ios-sdk-integration-max.md
index 746d660e17..cd3a541f55 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-max.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-max.md
@@ -148,9 +148,11 @@ Now you should make a regular MAX's ad request. Everything else will be handled
Once you receive the ad it will be ready for display. Follow the [MAX instructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/interstitials#showing-an-interstitial-ad) for displaying an ad.
-### Rewarded Video
+### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+#### Integration example
```swift
// 1. Get an instance of MARewardedAd
@@ -176,32 +178,32 @@ The process for displaying the rewarded ad is the same as for displaying the Int
To be notified when a user earns a reward follow the [MAX intructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads#loading-a-rewarded-ad).
-#### Step 1: Get an instance of MARewardedAd
+##### Step 1: Get an instance of MARewardedAd
{:.no_toc}
This step is the same as for the original [MAX integration](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads). You don't have to make any modifications here.
-#### Step 2: Create MAXMediationRewardedUtils
+##### Step 2: Create MAXMediationRewardedUtils
{:.no_toc}
The `MAXMediationRewardedUtils` is a helper class, which performs certain utilty work for the `MediationRewardedAdUnit`, like passing the targeting keywords to the adapters.
-#### Step 3: Create MediationRewardedAdUnit
+##### Step 3: Create MediationRewardedAdUnit
{:.no_toc}
The `MediationRewardedAdUnit` is a part of the Prebid Mediation API. This class is responsible for making a bid request and providing a winning bid and targeting keywords to the adapters.
-#### Step 4: Make bid request
+##### Step 4: Make bid request
{:.no_toc}
The `fetchDemand` method makes a bid request to the Prebid Server and provides a result in a completion handler.
-#### Step 5: Make an Ad Reuest
+##### Step 5: Make an Ad Reuest
{:.no_toc}
Make a regular MAX's ad request. Everything else will be handled by GMA SDK and prebid adapters.
-#### Steps 6: Display an ad
+##### Steps 6: Display an ad
{:.no_toc}
Once the rewarded ad is received you can display it. Follow the [MAX instructions](https://dash.applovin.com/documentation/mediation/ios/getting-started/rewarded-ads#showing-a-rewarded-ad) for the details.
diff --git a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
index d41ceb0386..fb6b7e5e55 100644
--- a/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
+++ b/prebid-mobile/modules/rendering/ios-sdk-integration-pb.md
@@ -150,16 +150,16 @@ if interstitial.isReady {
```
-The **default** ad format for interstitial is **.banner**. In order to make a `multiformat bid request`, set the respective values into the `adFormats` property.
+The **default** ad formats for interstitial are **.banner** and **video**. In order to make a banner-only or video-only request, set the respective values into the `adFormats` property.
``` swift
// Make bid request for video ad
adUnit?.adFormats = [.video]
-// Make bid request for both video and banner ads
+// Make bid request for both video and banner ads (default behaviour)
adUnit?.adFormats = [.video, .banner]
-// Make bid request for banner ad (default behaviour)
+// Make bid request for banner ad
adUnit?.adFormats = [.banner]
```
@@ -192,9 +192,11 @@ func interstitialDidReceiveAd(_ interstitial: InterstitialRenderingAdUnit) {
}
```
-#### Rewarded Video
+#### Rewarded
-Integration example:
+{% include mobile/rewarded-server-side-configuration.md %}
+
+##### Integration example
``` swift
// 1. Create an Ad Unit
@@ -212,28 +214,54 @@ if rewardedAd.isReady {
}
```
-##### Step 1: Create Rewarded Ad Unit
+###### Step 1: Create Rewarded Ad Unit
{:.no_toc}
-Create the `RewardedAdUnit` object with parameter:
+Create the `RewardedAdUnit` object with the parameter:
- `configID` - an ID of Stored Impression on the Prebid Server
-##### Step 2: Load the Ad
+You can also customize ad unit by setting additional properties:
+
+- `adFormats` - the set of ad formats supported by the ad unit(the default value is `[.banner, .video]` formats);
+- `bannerParameters` - the banner parameters used for configuring ad unit;
+- `videoParameters` - the video parameters used for configuring ad unit.
+
+###### Step 2: Load the Ad
{:.no_toc}
Call the `loadAd()` method which will make a bid request to Prebid server.
-##### Step 3: Show the Ad when it is ready
+###### Step 3: Show the Ad when it is ready
{:.no_toc}
-Wait until the ad will be loaded and present it to the user in any suitable time.
+Wait until the ad is loaded and present it to the user at any suitable time.
``` swift
// MARK: RewardedAdUnitDelegate
func rewardedAdDidReceiveAd(_ rewardedAd: RewardedAdUnit) {
- // Now the ad is ready for display
+ // Now the ad is ready for display - call `show` method.
+ if rewardedAd.isReady {
+ rewardedAd.show(from: self)
+ }
+}
+```
+
+###### Step 4: Handle the reward
+{:.no_toc}
+
+Handle the reward in the appropriate method.
+
+``` swift
+// MARK: RewardedAdUnitDelegate
+
+func rewardedAdUserDidEarnReward(_ rewardedAd: RewardedAdUnit, reward: PrebidReward) {
+ let type = reward.type
+ let count = reward.count
+ let ext = reward.ext
+
+ // Process the reward
}
```
diff --git a/prebid-mobile/modules/rendering/modules-rendering.md b/prebid-mobile/modules/rendering/modules-rendering.md
index 9d82a5efd6..6b1f2cab98 100644
--- a/prebid-mobile/modules/rendering/modules-rendering.md
+++ b/prebid-mobile/modules/rendering/modules-rendering.md
@@ -17,7 +17,6 @@ Starting with `1.14.0-beta1` Prebid mobile supports integration with **AdMob**.
Starting with `2.0.0` Prebid mobile supports integration with **AppLovin MAX**.
-
## Supported Ad Formats
Prebid Mobile rendering supports the following ad formats:
@@ -26,7 +25,5 @@ Prebid Mobile rendering supports the following ad formats:
* Video Banner
* Display Interstitial
* Video Interstitial
-* Rewarded Video
-
-
-
+* Display Rewarded
+* Video Rewarded
diff --git a/prebid-mobile/pbm-api/android/code-integration-android.md b/prebid-mobile/pbm-api/android/code-integration-android.md
index 01adcdc33b..4791cf1ac5 100644
--- a/prebid-mobile/pbm-api/android/code-integration-android.md
+++ b/prebid-mobile/pbm-api/android/code-integration-android.md
@@ -383,7 +383,8 @@ In the table below, you can find Prebid's test IDs that are used in the Demo App
|`prebid-demo-video-interstitial-320-480-original-api`|**Video Interstitial** (Original API)|Returns a stored response that contains a Video Interstitial 320x480 winning bid.|
|`prebid-demo-video-interstitial-320-480`|**Video Interstitial** (Rendering API)|Returns a stored response that contains a Video Interstitial 320x480 winning bid.|
|`prebid-demo-video-rewarded-320-480-original-api`|**Rewarded Video** (Original API)|Returns a stored response that contains a Rewarded Video 320x480 winning bid.|
-|`prebid-demo-video-rewarded-320-480`|**Rewarded Video** (Original API)|Returns a stored response that contains a Rewarded Video 320x480 winning bid.|
+|`prebid-demo-banner-rewarded-time`|**Rewarded HTML** Returns a stored response that contains a Rewarded HTML 320x480 winning bid with rewarded configuration.||
+|`prebid-demo-video-rewarded-endcard-time`|**Rewarded Video** Returns a stored response that contains a Rewarded Video 320x480 winning bid with rewarded configuration.||
|`sample_video_response`|**Instream Video**|Returns a stored response that contains a Video 320x480 winning bid. Note: on Android we have an [issue](https://github.com/prebid/prebid-mobile-android/issues/517) with Instream Video demo example. When it is fixed the config id will be updated to the new one.|
|`prebid-demo-banner-native-styles`|**Native Styles**|Returns a stored response that contains a Native winning bid.|
|`prebid-demo-banner-native-styles`|**In-App Native**|Returns a stored response that contains a Native winning bid.|
diff --git a/prebid-mobile/pbm-api/ios/code-integration-ios.md b/prebid-mobile/pbm-api/ios/code-integration-ios.md
index 84b9f03fe7..c0a7f1c192 100644
--- a/prebid-mobile/pbm-api/ios/code-integration-ios.md
+++ b/prebid-mobile/pbm-api/ios/code-integration-ios.md
@@ -384,7 +384,8 @@ In the table below, you can find Prebid's test IDs that are used in the Demo App
|`prebid-demo-video-interstitial-320-480-original-api`|**Video Interstitial** (Original API)|Returns a stored response that contains a Video Interstitial 320x480 winning bid.|
|`prebid-demo-video-interstitial-320-480`|**Video Interstitial** (Rendering API)|Returns a stored response that contains a Video Interstitial 320x480 winning bid.|
|`prebid-demo-video-rewarded-320-480-original-api`|**Rewarded Video** (Original API)|Returns a stored response that contains a Rewarded Video 320x480 winning bid.|
-|`prebid-demo-video-rewarded-320-480`|**Rewarded Video** (Original API)|Returns a stored response that contains a Rewarded Video 320x480 winning bid.|
+|`prebid-demo-banner-rewarded-time`|**Rewarded HTML** Returns a stored response that contains a Rewarded HTML 320x480 winning bid with rewarded configuration.||
+|`prebid-demo-video-rewarded-endcard-time`|**Rewarded Video** Returns a stored response that contains a Rewarded Video 320x480 winning bid with rewarded configuration.||
|`prebid-demo-video-interstitial-320-480`|**Instream Video**|Returns a stored response that contains a Video 320x480 winning bid.|
|`prebid-demo-banner-native-styles`|**Native Styles**|Returns a stored response that contains a Native winning bid.|
|`prebid-demo-banner-native-styles`|**In-App Native**|Returns a stored response that contains a Native winning bid.|
diff --git a/prebid-server/developers/add-a-module-go.md b/prebid-server/developers/add-a-module-go.md
index e76374d6a5..1b31e12647 100644
--- a/prebid-server/developers/add-a-module-go.md
+++ b/prebid-server/developers/add-a-module-go.md
@@ -268,6 +268,10 @@ In the `BidderRequest` or `RawBidderResponse` stage:
{:start="5"}
5. More test implementations for each hook can be found in unit-tests at [github.com/prebid/prebid-server/tree/master/modules/prebid/ortb2blocking](https://github.com/prebid/prebid-server/tree/master/modules/prebid/ortb2blocking) folder.
+### Optional Code Update Notification
+
+The core Prebid engineering team sometimes makes changes to module files for various reasons: general refactoring, internal API changes, bug fixes, etc. If you want to receive an email alert about any changes made to your codebase, you can update the [codepath notification file](https://github.com/prebid/prebid-server/blob/master/.github/workflows/scripts/codepath-notification). Please read the instructions in the file. In many cases, the regex will just be your modulecode, but if you have a short modulecode, you might need to be more precise or you'll get false notifications.
+
### Configuration
It's possible to define default module configuration which can be read by the module at PBS startup. An example configuration for hooks might look like this:
diff --git a/prebid-server/developers/add-a-module-java.md b/prebid-server/developers/add-a-module-java.md
index cdb00f8815..b457c5241b 100644
--- a/prebid-server/developers/add-a-module-java.md
+++ b/prebid-server/developers/add-a-module-java.md
@@ -93,6 +93,10 @@ The structure of your module source code inside the modules directory must have
+- README.md <- documentation
```
+### Optional Code Update Notification
+
+The core Prebid engineering team sometimes makes changes to module files for various reasons: general refactoring, internal API changes, bug fixes, etc. If you want to receive an email alert about any changes made to your codebase, you can update the [codepath notification file](https://github.com/prebid/prebid-server-java/blob/master/.github/workflows/scripts/codepath-notification). Please read the instructions in the file. In many cases, the regex will just be your modulecode, but if you have a short modulecode, you might need to be more precise or you'll get false notifications.
+
## Module Configuration
There are several places to configure a module:
diff --git a/prebid-server/developers/add-new-bidder-go.md b/prebid-server/developers/add-new-bidder-go.md
index b1c8b618b7..b4c708d370 100644
--- a/prebid-server/developers/add-new-bidder-go.md
+++ b/prebid-server/developers/add-new-bidder-go.md
@@ -357,6 +357,11 @@ We request you do not duplicate information already present in the [OpenRTB 2.x
{: .alert.alert-warning :}
You may not try to set the full endpoint domain from a publisher-specified bidder parameter. Prebid Server is not an open proxy. If absolutely necessary, you may specify a *portion* of the domain as a parameter to support geo regions or account specific servers. However, this is discouraged and may degrade the performance of your adapter since the server needs to maintain more outgoing connections. Host companies may choose to disable your adapter if it uses a dynamically configured domain.
+{: .alert.alert-info :}
+Prebid publishers and managed services often require test responses from bid adapters. Please plan to provide a method for obtaining test bids for each mediatype you support. This can be done in response to the OpenRTB `test:1` flag, or with a documented set of bidder parameters.
+
+#### Defining the Parameters
+
Create a file with the path `static/bidder-params/{bidder}.json` and use [JSON Schema](https://json-schema.org/understanding-json-schema/) to define your bidder parameters. Prebid Server requires this file for every adapter, even if yours doesn't require bidder parameters (see the 'no parameters' example at the end of this section).
Let's start with this example which defines one required `placementId` string parameter:
@@ -1418,6 +1423,12 @@ Notes on the metadata fields:
- `openrtb_ext/bidders.go`
- `exchange/adapter_builders.go`
+### Optional Code Update Notification
+
+The core Prebid engineering team sometimes makes changes to bid adapter files for various reasons: general refactoring, internal API changes, bug fixes, etc. If you want to receive an email alert about any changes made to your codebase, you can update the [codepath notification file](https://github.com/prebid/prebid-server/blob/master/.github/workflows/scripts/codepath-notification). Please read the instructions in the file. In many cases, the regex will just be your biddercode, but if you have a short biddercode, you might need to be more precise or you'll get false notifications.
+
+Likewise, your bidder documentation can receive alerts by updating the [docs codepath notification file](https://github.com/prebid/prebid.github.io/blob/master/.github/workflows/scripts/codepath-notification).
+
## Contribute
Thank you for taking the time to develop a Prebid Server bid adapter. When you're ready, [contribute](https://github.com/prebid/prebid-server/blob/master/docs/developers/contributing.md) your new bid adapter by opening a PR to the [PBS-Go GitHub repository](https://github.com/prebid/prebid-server) with the name "New Adapter: {Bidder}".
diff --git a/prebid-server/developers/add-new-bidder-java.md b/prebid-server/developers/add-new-bidder-java.md
index 5971683b0b..833d37d071 100644
--- a/prebid-server/developers/add-new-bidder-java.md
+++ b/prebid-server/developers/add-new-bidder-java.md
@@ -269,6 +269,11 @@ We request that you do not duplicate information that is already present in the
{: .alert.alert-warning :}
You may not try to set the full endpoint domain from a publisher-specified bidder parameter. Prebid Server is not an open proxy. If absolutely necessary, you may specify a *portion* of the domain as a parameter to support geo regions or account specific servers. However, this is discouraged and may degrade the performance of your adapter since the server needs to maintain more outgoing connections. Host companies may choose to disable your adapter if it uses a dynamically configured domain.
+{: .alert.alert-info :}
+Prebid publishers and managed services often require test responses from bid adapters. Please plan to provide a method for obtaining test bids for each mediatype you support. This can be done in response to the OpenRTB `test:1` flag, or with a documented set of bidder parameters.
+
+#### Defining the Parameters
+
Create a file with the path `static/bidder-params/{bidder}.json` using [JSON Schema](https://json-schema.org/understanding-json-schema/) to define your bidder parameters. Prebid Server requires this file for every adapter, even if yours doesn't require bidder parameters (see the 'no parameters' example at the end of this section).
Let's start with this example which defines one required `placementId` string parameter:
@@ -1431,6 +1436,12 @@ Notes on the metadata fields:
- Register With The Core
- `org/prebid/server/spring/config/bidder/{bidder}Configuration.java`
+### Optional Code Update Notification
+
+The core Prebid engineering team sometimes makes changes to bid adapter files for various reasons: general refactoring, internal API changes, bug fixes, etc. If you want to receive an email alert about any changes made to your codebase, you can update the [codepath notification file](https://github.com/prebid/prebid-server-java/blob/master/.github/workflows/scripts/codepath-notification). Please read the instructions in the file. In many cases, the regex will just be your biddercode, but if you have a short biddercode, you might need to be more precise or you'll get false notifications.
+
+Likewise, your bidder documentation can receive alerts by updating the [docs codepath notification file](https://github.com/prebid/prebid.github.io/blob/master/.github/workflows/scripts/codepath-notification).
+
## Contribute
Whew! You're almost done. Thank you for taking the time to develop a Prebid Server bid adapter. When you're ready, [contribute](https://github.com/prebid/prebid-server-java/blob/master/docs/developers/contributing.md) your new bid adapter by opening a PR to the [PBS-Java GitHub repository](https://github.com/prebid/prebid-server-java) with the name "New Adapter: {Bidder}".
diff --git a/prebid-server/developers/pbs-cookie-sync.md b/prebid-server/developers/pbs-cookie-sync.md
index 04bf2856dd..b97d7e3b02 100644
--- a/prebid-server/developers/pbs-cookie-sync.md
+++ b/prebid-server/developers/pbs-cookie-sync.md
@@ -33,7 +33,7 @@ Here's how these IDs get placed in the cookie from Prebid.js:
{:class="pb-lg-img"}
-1. When the [s2sConfig](/dev-docs/modules/prebidServer.html) is set, Prebid.js initiates a call to the Prebid Server [`/cookie_sync`](/prebid-server/endpoints/pbs-endpoint-cookieSync.html), letting it know which server-side bidders will be participating in the header bidding auction.
+1. When the [s2sConfig](/dev-docs/modules/prebidServer.html) is set, Prebid.js initiates a call to the Prebid Server [`/cookie_sync`](../endpoints/pbs-endpoint-cookieSync.html), letting it know which server-side bidders will be participating in the header bidding auction.
```text
POST https://prebid-server.example.com/cookie_sync
@@ -78,10 +78,10 @@ This is how to control the coop syncing behavior from Prebid.js:
### Manually initiating a sync
-Where Prebid.js isn't present, like on [AMP](/prebid-server/use-cases/pbs-amp.html) pages, the call to [/cookie_sync](prebid-server/endpoints/pbs-endpoint-cookieSync.html) doesn't happen automatically.
+Where Prebid.js isn't present, like on [AMP](/prebid-server/use-cases/pbs-amp.html) pages, the call to [/cookie_sync](../endpoints/pbs-endpoint-cookieSync.html) doesn't happen automatically.
If there are scenarios where Prebid.js isn't around to initiate the /cookie_sync call, publishers can choose to put an iframe on their page.
-This approach works in a way quite similar to Prebid.js except that the [/cookie_sync endpoint](/prebid-server/endpoints/pbs-endpoint-cookieSync.html) is initiated by a separate script that's part of `load-cookie.html'. This file must be placed on a CDN by the publisher's Prebid Server host company. Up until July 2024, the script existed in the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative) repository, but has since been moved to the [user-sync](https://github.com/prebid/user-sync) repo.
+This approach works in a way quite similar to Prebid.js except that the [/cookie_sync endpoint](../endpoints/pbs-endpoint-cookieSync.html) is initiated by a separate script that's part of `load-cookie.html'. This file must be placed on a CDN by the publisher's Prebid Server host company. Up until July 2024, the script existed in the [Prebid Universal Creative](https://github.com/prebid/prebid-universal-creative) repository, but has since been moved to the [user-sync](https://github.com/prebid/user-sync) repo.
1. The Prebid Server hosting company places the [load-cookie.html](#manually-initiating-a-sync) file onto a CDN.
diff --git a/prebid-server/features/pbs-usgen.md b/prebid-server/features/pbs-usgen.md
index bfe61d2481..5273f9ddce 100644
--- a/prebid-server/features/pbs-usgen.md
+++ b/prebid-server/features/pbs-usgen.md
@@ -178,4 +178,4 @@ Additional information about the outcoming of privacy module processing can be o
* [Prebid US Compliance Support](/features/mspa-usnat.html)
* [US Custom Logic Privacy Module](/prebid-server/features/pbs-uscustomlogic.html)
* [Activity Control system](/prebid-server/features/pbs-activitycontrols.html)
-* [IAB US National Privacy Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/US-National/IAB%20Privacy%E2%80%99s%20National%20Privacy%20Technical%20Specification.md)
+* [IAB US National Privacy Specification](https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/US-National/IAB%20Privacy%E2%80%99s%20Multi-State%20Privacy%20Agreement%20(MSPA)%20US%20National%20Technical%20Specification.md)