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 for First Party Data #131

Closed
yoalex5 opened this issue Jul 30, 2019 · 0 comments
Closed

Support for First Party Data #131

yoalex5 opened this issue Jul 30, 2019 · 0 comments

Comments

@yoalex5
Copy link
Collaborator

yoalex5 commented Jul 30, 2019

Type of issue

Feature

[This is the Prebid SDK implementation of https://github.com/prebid/Prebid.js/issues/3687]

Background

As part of a publisher's monetization strategy, they can optionally pass First Party Data (FPD), either about the inventory or about the user, the application which is reserved for Private MarketPlace (PMP) deals. A number of adapters support taking key/value pairs as arguments, but they're all different. e.g.

  • Rubicon takes keywords, inventory and visitor parameters
  • AppNexustakes keywords and user
  • OpenX takes customParams
  • Index takes firstPartyData
  • etc

Goals

  • Provide a standard method in the SDK to pass FPD to adapters
  • Provide an Access Control List for publishers to authorize which adapters have access to FPD

Proposal

The proposal has two main components:

  • Publisher facing API in the SDK to pass FPD
  • Method to pass FPD to prebid server

SDK interface

  • Define an SDK interface to allow passing of the following data points:
    -- An arbitrary set of inventory (app data) key / values pairs at the request and impression grain
    -- An arbitrary set of visitor (user data) key / values pairs at the request grain only
    -- Ability to pass a free from list (Access Control List) to authorize who has access to global FPD

OpenRTB interface

The PBJS and SDK values would be copied to these OpenRTB locations:

  • global set of bidders allowed to receive global ext.data (Access Control List) - ext.prebid.data.bidders[]
  • global context.data - app.ext.data
  • global user.ATTRIBUTE - user.ATTRIBUTE (keywords, gender, yob, geo)
  • global user.data - user.ext.data
  • adunit-specific context.data - imp[].ext.context.data
  • adunit-specific context.ATTRIBUTE - imp[].ext.context.ATTRIBUTE (keywords)

OpenRTB translation behavior:

  • Access Control List (ext.prebid.data)
    -- If no bidders were set in the ACL input, include bidders object but leave array empty if any globally set data objects are set
    -- bidder values, if set, should be an array of strings
  • Global Inventory (app.ext.data) and Visitor (user.ext.data) data
    -- Any number of data keys can be set
    -- Values for each key must be an array of strings if set
    -- Values can be an empty array

Example OpenRTB data request

{
    "ext": {
       "prebid": {
           "data": { "bidders": [ 'rubicon', 'appnexus' ] }  // applies to only global configuration
       }
    },
    "app": {
         "ext": {
             "data": { 
                "level": ["1"],
                "categories": ["game", "rpg", "violence"]
            } // only seen in PBS by bidders named in ext.prebid.data.bidders[]
         }
    },
    "user": {
        "keywords": [], 
        "gender": "", 
        "yob": 1999, 
        "geo": {},
        "ext": {
            "data": { 
                "interests": ["games", "sports", "travel"],
                "income": ["80k"]
            }  // only seen by bidders named in ext.prebid.data.bidders[]
        }
    },
    "imp": [
        "ext": {
            "context": {
                "keywords": [],
                "data": {
                    "viewable":["true"],
                    "interstitial":["true"]
                }  //not set with ACL
            }
         }
    ]
}

Other information

The original proposal was in the prebid.js issue: prebid/Prebid.js#3687

Prebid Server proposal: prebid/prebid-server#879

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant