Skip to content

Core's auction speaks OpenRTB #1336

Open

Description

@jwrosewell

One of the removals listed in #777.

What is wrong

Core builds every demand source's request as an OpenRTB 2.6 bid request and reads every answer as an OpenRTB bid response, in auction/openrtb.rs, openrtb.rs, the auction endpoints and the EID helpers, and the generated OpenRTB types are a crate of their own that core depends on. A demand source on another protocol cannot be an auction module without translating to OpenRTB first, and a change in what OpenRTB carries is a change in core.

crates/auction-protocol/openrtb exists for the plain OpenRTB demand implementation, so the standard already has a crate, and core still holds the protocol.

What changes

  • Core keeps a neutral auction. The facts core routes to a demand source (the slots, the formats, the resolved permission state, the identifiers the request may carry) and what it takes back (bids, with the creative, the price and the seat) are core's types and name no protocol.
  • OpenRTB is a protocol module. The request builder, the response reader and the EID formatting move to crates/auction-protocol/openrtb, which depends on the generated types crate, and a demand implementation that speaks OpenRTB depends on that crate, as one vendor crate may depend on another where no released package offers the functionality.
  • The endpoints are protocol-neutral. The auction endpoints call the protocol module the selected demand sources use, and read nothing of OpenRTB themselves.

Why

The seam (#1094) made each demand source a module, and left them all speaking the one protocol core knows. A standard is a vendor as much as a product is, and the auction protocol is the largest standard core still carries.

What breaks

A demand source implemented against the OpenRTB types keeps working through the protocol crate. A deployment's settings do not change.

Where it is

A series on the stack, as a draft on the fork, jwrosewell#40, on top of the 51Degrees client hints middleware (fork pull request 39). The series will say what of the generated types crate moves with it.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions