Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support server-side configuration for client ad units #2186

Closed
YuriyVelichkoPI opened this issue Mar 17, 2022 · 4 comments
Closed

Support server-side configuration for client ad units #2186

YuriyVelichkoPI opened this issue Mar 17, 2022 · 4 comments
Labels
PBS-Go Ready For Dev Feature specification is ready to be developed.

Comments

@YuriyVelichkoPI
Copy link

Motivation

The deployment cycle of the mobile SDK is pretty long and could be even infinite. To supply any changes to the user’s app we should:

  • Release a new version of the SDK
  • The publisher should update the SDK version
  • The publisher should release the new version of the application
  • The User should update the application to the latest version

If the user doesn’t update the app it will still use the old SDK version, so changes may never reach a part of the audience.

However, it’s often needed to make some changes on the user side ASAP in order to fix some behavior or improve UX. It is possible to do this via the server-side settings for the client (SDK).

Using the server-side configuration publishers will be able to control the SDK properties remotely.

Background

In the nearest releases, we are going to provide publishers the ability to customize some display properties e.g:

  • Video asset selection policy
  • Application Muted
  • Close Icon
  • Skip Option
  • Skip Delay

The list of customized properties will grow eventually.

From the SDK perspective, the best way to support such customization is to receive configuration properties from the PBS and apply them at runtime. So publishers can rollout or rollback changes on the flight.

Objectives

The publisher should be able to store the properties in the format of a JSON object with custom key-value pairs on the PBS. For instance:

{
    skip_offset_sec: 10 
}

The SDK should be able to request these properties via an existing or new endpoint.

Proposed solutions

Put properties into the stored requests

The configuration properties could be added directly to the stored requests. With respective paths ext.prebid.ad_unit_config for stored impression, and ext.prebid.sdk_config for stored requests.

Put properties into the separated stored configs

The configuration properties could be added as separated stored configs. Like stored requests.

Return configs in the bid response

The fields bid.ext.prebid.ad_unit_config and bid.ext.prebid.sdk_config could be used for providing the configuration properties.

In order not to send configs in each bid response, PBS may require the additional flag in the bid request e.g. includeclientconfig. If PBS receives the bid request with includeclientconfig it should attach the configs for the stored request and stored impression to the bid response. If there is no flag includeclientconfig in the request, configs should be ignored. SDK in its own turn may request configs once per hour, for example. Or it also can be customizable via ext.prebid.sdk_config.

Introduce a new endpoint

GET /stored_config with config ID can return respective configuration properties.

@bretg
Copy link
Contributor

bretg commented Mar 18, 2022

Suggestion - how about two generic pass-throughs:

  1. global config: bidrequest.ext.prebid.passthrough --> this object is copied to bidresponse.ext.prebid.passthrough
  2. imp-level config: bidrequest.imp.ext.prebid.passthrough --> this object is copied to every instance of bidresponse.seatbid[].bid[].ext.prebid.passthrough where the imp.id matches seatbid[].bid[].impid

@bretg bretg added the Intent to implement An issue describing a plan for a major feature. These are intended for community feedback label Apr 1, 2022
@bretg
Copy link
Contributor

bretg commented Apr 7, 2022

This is approved by the committee

@mansinahar mansinahar added Ready For Dev Feature specification is ready to be developed. and removed Intent to implement An issue describing a plan for a major feature. These are intended for community feedback labels May 16, 2022
@bretg
Copy link
Contributor

bretg commented Jun 24, 2022

Done with PBS-Java 1.91

@SyntaxNode
Copy link
Contributor

Implemented in PBS-Go 0.221.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PBS-Go Ready For Dev Feature specification is ready to be developed.
Projects
None yet
Development

No branches or pull requests

4 participants