Rule reference

Field name is lowerCamelCase instead of the OpenRTB spelling

openrtb.dialect.camel_case_namewarningRequest or response

A field arrived under the lowerCamelCase name protojson emits by default, such as privateAuction for private_auction. The field was resolved and validated, but a JSON reader will not find it.

What it means

A field arrived spelled the way protobuf JSON serialises it by default: privateAuction rather than private_auction, usPrivacy rather than us_privacy. Protojson emits lowerCamelCase unless the serializer sets UseProtoNames, and OpenRTB's own field names are the underscored ones.

Why it matters

Protojson accepts both spellings when parsing, so a protobuf-to-protobuf hop works and hides the problem. The moment the payload reaches a plain JSON consumer, the field is simply absent: a private auction reads as an open one, a privacy string goes unread, and nothing errors. It is a silent data loss rather than a rejection.

How to fix it

Serialize with proto field names. In Go that is protojson.MarshalOptions{UseProtoNames: true}. Only three field names in the whole OpenRTB catalog have an underscore, so the fix is small and the exposure is narrow, but it is silent, which is why it is worth flagging.

Example that trips it

{ "id": "req-1", "imp": [{ "id": "1", "banner": { "w": 300, "h": 250 }, "pmp": { "privateAuction": true } }] }

Validated with --dialect proto-json, which resolves the name and keeps checking the subtree. In spec JSON the same field reports as undefined.

Check your payload

Paste a bid request or response into the tester to see whether this code fires against it, or gate on the id in CI with the CLI: the id is stable, wording is not.

Back to the full diagnostic code reference.