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

Proposal: Standardizing UserId module OpenRTB format #3900

Closed
adxcgcom opened this issue Jun 12, 2019 · 5 comments
Closed

Proposal: Standardizing UserId module OpenRTB format #3900

adxcgcom opened this issue Jun 12, 2019 · 5 comments

Comments

@adxcgcom
Copy link
Contributor

adxcgcom commented Jun 12, 2019

Type of issue

Discussion

Description

After evaluating 3 different manuals for UserId module or similar functionality we see, that we have 3 different definitions of how data should be written in OpenRTB format.

If Prebid can put together and in future merge all ideas, it would benefit all the community and simplify daily AdOps and development in OpenRTB community.

prebid:
WHO :user.ext.tpid[].source
WHAT:user.ext.tpid[].uid

unifiedId/tradedesk (adsrvr.org):
WHO :user.ext.eids[].source
WHAT:user.ext.eids[].uids[].id

Advertising-ID-Consortium
WHO :user.ext.eids[].source
WHAT:user.ext.eids[].uids[].id

At the moment we have only 9 modules using pubCommon / unifiedId/tradedesk, but with a planned future updates for this in many Bid Adapters maybe it's right time to have one standard.

Current main difference is that we have different field names (tpid, eids) and field only (uid) or array of values (uids). Also some field properties could be standardized (tdid or adserver.org), tdid or TDID (upper or lowercase,...)

Steps to reproduce

http://prebid.org/dev-docs/modules/userId.html

{
  "user": {
    "ext": {
      "tpid": [{
        "source": "tdid",
        "uid": "19cfaea8-a429-48fc-9537-8a19a8eb4f0c"
      },
      {
        "source": "pubcid",
        "uid": "29cfaea8-a429-48fc-9537-8a19a8eb4f0d"
      }]
    }
  }
}

https://www.thetradedesk.com/assets/general/Unified-ID-Adoption-Guidelines-for-SSPs-v1.5.pdf

{
    "user": {
        "id": "W13bZtHM5KUAAEQRVFsAAAAL",
        "ext": {
            "eids": [{
                "source": "adserver.org",
                "uids": [{
                    "id": "43f888e1-2941-4b9f-8dc9-1ffb631b7786",
                    "ext": {
                        "rtiPartner": "TDID"
                    }
                }]
            }]
        }
    }
}

https://github.com/Advertising-ID-Consortium/IdentityLink-in-RTB

{
    "user": {
        "buyeruid": "example_buyer",
        "id": "example_id",
        "ext": {
            "eids": [{
                    "source": "liveramp.com",
                    "uids": [{
                        "id": "XY1000bIVBVah9ium-sZ3ykhPiXQbEcUpn4GjCtxrrw2BRDGM",
                        "ext": {
                            "rtiPartner": "idl"
                        }
                    }]
                },
                {
                    "source": "adserver.org",
                    "uids": [{
                        "id": "6bca7f6b-a98a-46c0-be05-6020f7604598",
                        "ext": {
                            "rtiPartner": "TDID"
                        }
                    }]
                }
            ],
            "gdpr": 0
        }
    }
}

https://github.com/digi-trust/dt-cdn/wiki/OpenRTB-extension

Expected results

One common format defined

@adxcgcom adxcgcom changed the title UserId module OpenRTB format Proposal: Standardizing UserId module OpenRTB format Jun 12, 2019
@bretg
Copy link
Collaborator

bretg commented Jun 13, 2019

Would have been nice to have this feedback during the (lengthy) comments period on #3046, but I guess better late than never. :-)

Overall, I agree with you that we should adopt the user.ext.eids[] approach since that seems to be a standard we were unaware of. (I only referenced the OpenRTB spec while writing the original issue.)

At the moment we have only 9 modules using pubCommon / unifiedId/tradedesk

Unclear that we need to change anything on the Prebid.js side -- adapters are reading the values out of bidrequest.userid, which is a JSON structure that contains all available IDs.

The only two changes we would need to make for this are:

  1. update prebidServerBidAdapter to pass user.ext.eids[] instead of user.ext.tpid[]
  2. update Rubicon's Prebid Server-side adapter to read from eids instead of tpid. I believe we're the only ones that have implemented this on the server side and we can support this change pretty quickly.

@bretg
Copy link
Collaborator

bretg commented Jun 13, 2019

Since we're about to work on DigiTrust, looked it up and found their standard is different. https://github.com/digi-trust/dt-cdn/wiki/OpenRTB-extension

I don't see a standard for how PubCommon ID is supposed to be represented in OpenRTB. @pycnvr - any pointers? (Asking because you seem quite involved in the pubcommon effort)

So here's a full OpenRTB example for TDID, PubCommon, and DigiTrust -- we'll start making the changes.

{
    "user": {
        "ext": {
            "eids": [{
                "source": "adserver.org",
                "uids": [{
                    "id": "111111111111",
                    "ext": {
                        "rtiPartner": "TDID"
                    }
                }]
            },
            {
                "source": "pubcommon",
                "id":"11111111"
            }
            ],
            "digitrust": {
                "id": "11111111111",
                "keyv": 4
            }
        }
    }
}

And as we add more (couple more on the way), I'll make them pony up the OpenRTB spec.

@pycnvr
Copy link
Collaborator

pycnvr commented Jun 14, 2019

Hi @bretg, agreed. This doesn't sound like it will affect prebid.js user id module, but prebid-server instead. My understand is that example in UserId Module is just a suggestion. Not all bidders use OpenRTB, and the IDs can be repackaged accordingly. The UserId and its submodules does not dictate or use OpenRTB formats.

The user.ext.eids approach looks good. It's a good bridge between 2.5 and 3.0. Pubcommonid should also use an array for uids just to be consistent. That is the direction we are going with.
edit: change source to pubcid.org since spec wants a domain

{
   "user":{
      "ext":{
         "eids":[
            {
               "source":"adserver.org",
               "uids":[
                  {
                     "id":"111111111111",
                     "ext":{
                        "rtiPartner":"TDID"
                     }
                  }
               ]
            },
            {
               "source":"pubcid.org",
               "uids":[
                  {
                     "id":"11111111"
                  }
               ]
            }
         ],
         "digitrust":{
            "id":"11111111111",
            "keyv":4
         }
      }
   }
}

@bretg
Copy link
Collaborator

bretg commented Jun 17, 2019

Thanks @pycnvr. But I'm not comfortable putting pubcid.org in there since there's no such site. Someone could throw up a sketchy site there. Is there an actual domain for this?

Also - we discussed in the Prebid Server committee last week and approved this change.

@bretg
Copy link
Collaborator

bretg commented Jun 28, 2019

This was done with #3935

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

No branches or pull requests

3 participants