Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
e9632b5
Customize Prebid Server for Marfeel
albertmolinermrf Feb 14, 2019
982cd6a
Remove jacoco plugin
albertmolinermrf Mar 14, 2019
f01e592
Exclude all server integration tests
albertmolinermrf Mar 28, 2019
bd0865f
Move Marfeel dependencies to profile
albertmolinermrf Apr 24, 2019
30718f3
Exclude colliding transitive dependencies
albertmolinermrf Apr 25, 2019
8a56b31
Merge branch 'master' into marfeel-customization-changes
mikiescolarmrf Jul 5, 2019
0de048f
MRF-52602 :: increase vertx timeout for testing purposes
mikiescolarmrf Jul 5, 2019
c0c643a
Resolve custom Marfeel pom.xml conflicts
albertmolinermrf Nov 4, 2019
19a3e68
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Nov 21, 2019
d474b9d
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Jan 2, 2020
0ef851d
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Feb 26, 2020
9af0e33
create CI Pipeline
carlosmoyamrf Mar 10, 2020
9de0897
Merge branch 'marfeel-customization-changes' into marfeel-sync-prebid…
carlosmoyamrf Mar 10, 2020
c141de1
Update maven
carlosmoyamrf Mar 10, 2020
850f03c
Update maven
carlosmoyamrf Mar 10, 2020
562f791
Exclude colliding transitive dependencies
albertmolinermrf Apr 25, 2019
b3751a5
Exclude health failing tests
albertmolinermrf Mar 10, 2020
6d72330
Exclude health failing tests
albertmolinermrf Mar 10, 2020
d696382
Remove unused Jenkinsfile
albertmolinermrf Mar 17, 2020
b1cd7e5
Remove unused Jenkinsfile
albertmolinermrf Mar 17, 2020
b55f377
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Jun 22, 2020
1f6df1e
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Jul 8, 2020
962b7b0
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Jul 31, 2020
c9d4dda
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Aug 27, 2020
8273afe
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Sep 7, 2020
4518050
Merge branch 'master' into marfeel-sync-prebid-server-java
albertmolinermrf Sep 30, 2020
25cd0d5
Force always 300x250 in Eplanning
albertmolinermrf Nov 26, 2020
637beb4
Force always 300x250 in Eplanning
albertmolinermrf Nov 26, 2020
a9697db
Remove Eplanning tests due to customization
albertmolinermrf Nov 26, 2020
8c7705f
Merge marfeel-customization-changes
albertmolinermrf Nov 26, 2020
7e13911
avoid eplanning bids when 300x250 is not requested
oscarmarimrf Feb 11, 2021
a8717f1
remove unnecessary file
oscarmarimrf Feb 11, 2021
377d644
refactor
oscarmarimrf Feb 11, 2021
1ad3fe4
update vendor list endpoint
oscarmarimrf Feb 11, 2021
5f669c1
restore vendorlist endpoint for tcf v1
oscarmarimrf Feb 11, 2021
9796596
fix linting issues
oscarmarimrf Feb 11, 2021
03e6610
fix: avoid eplanning bids when 300x250 is not requested
oscarmarimrf Feb 11, 2021
bb92dff
Rename profile to generate executable
albertmolinermrf Feb 12, 2021
799f0fe
Merge fork-master
albertmolinermrf Apr 9, 2021
24d83ee
Take Marfeel repos URL from environment
jordillachmrf Dec 11, 2020
569954a
Add spotbugs plugin
albertmolinermrf Apr 13, 2021
d4fbb46
Pseudo-disable spotbugs
albertmolinermrf Apr 13, 2021
e03f20d
Adapt to shared library (#12)
albertmolinermrf Apr 13, 2021
f825152
Update from upstream without aliases (#13)
albertmolinermrf May 26, 2021
fe32b04
Dummy change to force a rebuild (#14)
albertmolinermrf Mar 13, 2023
4295134
Update JDK
francescsanjuanmrf Oct 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,4 @@ and verify response status is `200 OK`.
- [Code Style](docs/code-style.md)
- [Code Review](docs/code-reviews.md)
- [Versioning](docs/versioning.md)

25 changes: 25 additions & 0 deletions build/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
FROM --platform=amd64 tomcat:8.5-jdk8-temurin-jammy

ENV VERTICLE_FILE prebid-server.jar

# Set the location of the verticles
ENV VERTICLE_HOME /usr/verticles

#EXPOSE 5000

# Copy your fat jar to the container
COPY ./target/$VERTICLE_FILE $VERTICLE_HOME/
RUN mkdir -p /var/log/mbid/

# Launch the verticle
WORKDIR $VERTICLE_HOME
# Add Tini
ENV TINI_VERSION v0.18.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-static /tini
RUN chmod +x /tini

ENTRYPOINT ["/tini", "--"]


#It will be overwritten
CMD ["exec java -Dlogging.config=logback.xml -jar prebid-server.jar --debug --spring.config.location=classpath:/application.yaml,prebid-config.yaml"]
20 changes: 17 additions & 3 deletions docs/config-app.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,30 @@ Removes and downloads file again if depending service cant process probably corr
There are several typical keys:
- `adapters.<BIDDER_NAME>.enabled` - indicates the bidder should be active and ready for auction. By default all bidders are disabled.
- `adapters.<BIDDER_NAME>.endpoint` - the url for submitting bids.
- `adapters.<BIDDER_NAME>.pbs-enforces-gdpr` - indicates if pbs server provides gdpr support for bidder or bidder will handle it itself.
- `adapters.<BIDDER_NAME>.pbs-enforces-gdpr` - indicates if PBS server provides GDPR support for bidder or bidder will handle it itself.
- `adapters.<BIDDER_NAME>.pbs-enforces-ccpa` - indicates if PBS server provides CCPA support for bidder or bidder will handle it itself.
- `adapters.<BIDDER_NAME>.modifying-vast-xml-allowed` - indicates if PBS server is allowed to modify VAST creatives received from this bidder.
- `adapters.<BIDDER_NAME>.deprecated-names` - comma separated deprecated names of bidder.
- `adapters.<BIDDER_NAME>.aliases` - comma separated aliases of bidder.
- `adapters.<BIDDER_NAME>.meta-info.maintainer-email` - specifies maintainer e-mail address that will be shown in bidder info endpoint response.
- `adapters.<BIDDER_NAME>.meta-info.app-media-types` - specifies media types supported for app requests that will be shown in bidder info endpoint response.
- `adapters.<BIDDER_NAME>.meta-info.site-media-types` - specifies media types supported for site requests that will be shown in bidder info endpoint response.
- `adapters.<BIDDER_NAME>.meta-info.supported-vendors` - specifies viewability vendors supported by the bidder.
- `adapters.<BIDDER_NAME>.meta-info.vendor-id` - specifies TCF vendor ID.
- `adapters.<BIDDER_NAME>.usersync.url` - the url for synchronizing UIDs cookie.
- `adapters.<BIDDER_NAME>.usersync.redirect-url` - the redirect part of url for synchronizing UIDs cookie.
- `adapters.<BIDDER_NAME>.usersync.cookie-family-name` - the family name by which user ids within adapter's realm are stored in uidsCookie.
- `adapters.<BIDDER_NAME>.usersync.type` - usersync type (i.e. redirect, iframe).
- `adapters.<BIDDER_NAME>.usersync.support-cors` - flag signals if CORS supported by usersync.

But feel free to add additional bidder's specific options.
In addition, each bidder could have arbitrary aliases configured that will look and act very much the same as the bidder itself.
Aliases are configured by adding child configuration object at `adapters.<BIDDER_NAME>.aliases.<BIDDER_ALIAS>.`, aliases
support the same configuration options that their bidder counterparts support except `aliases` (i.e. it's not possible
to declare alias of an alias). Another restriction of aliases configuration is that they cannot declare support for media types
not supported by their bidders (however aliases could narrow down media types they support). For example: if the bidder
is written to not support native site requests, then an alias cannot magically decide to change that; however, if a bidder
supports native site requests, and the alias does not want to for some reason, it has the ability to remove that support.

Also, each bidder could have its own bidder-specific options.

## Logging
- `logging.http-interaction.max-limit` - maximum value for the number of interactions to log in one take.
Expand Down
7 changes: 4 additions & 3 deletions docs/developers/add-new-bidder.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ your bidder will access them at `request.imp[i].ext.bidder`--regardless of what
## Configuration

Add default configuration properties and metadata(e.g. contact email, platform & media type support) for your Bidder to `src/main/resources/bidder-config/{bidder}.yaml` file.
For more information about application configuration see [here](../config.md)
For more information about application configuration see [here](../config-app.md)

## Implementation

Expand Down Expand Up @@ -100,7 +100,8 @@ It should be public class with Spring `@Configuration` annotation so that framew
This file consists of three main parts:
- the constant `BIDDER_NAME` with the name of your Bidder.
- injected configuration properties (like `endpoint`, `usersyncUrl`, etc) needed for the Bidder's implementation.
- declaration of `BidderDeps` bean combining _bidder name_, _Usersyncer_ and _BidderRequester_ in one place as a single point-of-truth for using it in application.
- declaration of `BidderDeps` bean combining _bidder name_, _Usersyncer_, _Adapter_, _Bidder_ and other meta-data
for the bidder and its aliases in one place as a single point-of-truth for using it in application.

Also, you can add `@ConditionalOnProperty` annotation on configuration if bidder has no default properties.
See `src/main/java/org/prebid/server/spring/config/bidder/FacebookConfiguration.java` as an example.
Expand All @@ -122,7 +123,7 @@ Commonly you should write tests for covering:
- specific cases for composing requests to exchange.
- specific cases for processing responses from exchange.

Do not forget to add your Bidder to `ApplicationTest.java` tests.
Do not forget to add integration test for your Bidder in `src/test/java/org/prebid/server/it`.

We expect to see at least 90% code coverage on each bidder.

Expand Down
16 changes: 14 additions & 2 deletions docs/endpoints/cookieSync.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,23 @@ This endpoint is used during cookie syncs. For technical details, see the
This returns a set of URLs to enable cookie syncs across bidders. (See Prebid.js documentation?) The request
must supply a JSON object to define the list of bidders that may need to be synced.

```
```json
{
"bidders": ["appnexus", "rubicon"],
"coopSync": true,
"gdpr": 1,
"gdpr_consent": "BONV8oqONXwgmADACHENAO7pqzAAppY",
"limit": 2
"limit": 2,
"filterSettings": {
"iframe": {
"bidders": ["rubicon"], // only this bidder is excluded from syncing iframe pixels, all other bidders are allowed
"filter": "exclude"
},
"image": {
"bidders": ["appnexus"], //only this bidder is allowed to sync image pixels
"filter": "include"
}
}
}
```

Expand All @@ -31,6 +41,8 @@ must supply a JSON object to define the list of bidders that may need to be sync
get the count down to limit if more would otherwise have been returned. This is to facilitate clients not overloading a user with syncs
the first time they are encountered.

`filterSettings` is optional. It defines which bidders are allowed to use which usersync method.

If `gdpr` is omitted, callers are still encouraged to send `gdpr_consent` if they have it.
Depending on how the Prebid Server host company has configured their servers, they may or may not require it for cookie syncs.

Expand Down
2 changes: 1 addition & 1 deletion docs/endpoints/setuid.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ This endpoint saves a UserID for a Bidder in the Cookie. Saved IDs will be recog
- `uid`: The ID which the Bidder uses to recognize this user. If undefined, the UID for `bidder` will be deleted.
- `gdpr`: This should be `1` if GDPR is in effect, `0` if not, and undefined if the caller isn't sure
- `gdpr_consent`: This is required if `gdpr` is one, and optional (but encouraged) otherwise. If present, it should be an [unpadded base64-URL](https://tools.ietf.org/html/rfc4648#page-7) encoded [Vendor Consent String](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/Consent%20string%20and%20vendor%20list%20formats%20v1.1%20Final.md#vendor-consent-string-format-).
- `format`: is optional. When `format=img`, response will include `tracking-pixel.png` file.
- `f`: is optional. When `f=i`, response will include `tracking-pixel.png` file, when `f=b` respond with empty html, content-length=0 and text/html content type.

If the `gdpr` and `gdpr_consent` params are included, this endpoint will _not_ write a cookie unless:

Expand Down
2 changes: 2 additions & 0 deletions docs/metrics.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ Following metrics are collected and submitted if account is configured with `det
- `usersync.bad_requests` - number of requests received with bidder not specified
- `usersync.<bidder-name>.sets` - number of requests received resulted in `uid` cookie update for `<bidder-name>`
- `usersync.<bidder-name>.tcf.blocked` - number of requests received that didn't result in `uid` cookie update for `<bidder-name>` because of lack of user consent for this action according to TCF
- `usersync.<bidder-name>.tcf.invalid` - number of requests received that are lacking of a valid consent string for `<bidder-name>` in setuid endpoint
- `usersync.all.tcf.invalid` - number of requests received that are lacking of a valid consent string for all requested bidders cookieSync endpoint

## Privacy metrics
- `privacy.tcf.(missing|invalid)` - number of requests lacking a valid consent string
Expand Down
Loading