Docs

rtblint documentation

How rtblint validates OpenRTB bid requests, what each finding means, and how to run the same checks from the tester, the Rust core, or the CLI.

What rtblint checks

rtblint validates an OpenRTB bid request against a tracked snapshot of the specification. It is a structural and semantic linter, not a schema-only check: it parses the JSON, walks the object tree against the canonical OpenRTB catalog, and reports anything that does not belong, is in the wrong place, or has the wrong type.

The current core focuses on OpenRTB 2.6 bid requests. Bid response validation and OpenRTB 3.0 are on the roadmap and not wired yet.

Rule ids

Every issue carries a stable rule id and, where it applies, the JSON path that tripped it. The id is the contract: it does not change when wording changes, so you can match on it in CI.

openrtb.payload.invalid_jsonerrorThe payload is not parseable JSON. No field rules run until this is fixed.
openrtb.field.undefinederrorA field is not defined in the canonical OpenRTB catalog for the selected version.
openrtb.field.deprecatedwarningA field still parses but is deprecated in the selected version. Migrate to its replacement.
openrtb.field.movederrorA field moved to a different path in this version (for example regs.ext.gdpr → regs.gdpr).

OpenRTB protocol reference

Beyond the validator, the docs cover the protocol details that usually live in the spec PDF: object anatomy, enumerated lists, privacy signals, and the fields that changed between versions.

Tracked versions

rtblint tracks OpenRTB 2.6 by release snapshot (2.6-202204 through 2.6-202505) so that deprecations and moved fields are reported against the exact version you target. The tester defaults to the latest 2.6 snapshot; pick an older one to validate against it.

Run it yourself

The tester is the rtblint Rust core compiled to WASM. The same core is available as a library and CLI:

  • Rust: rtblint-core and the rtblint CLI on crates.io
  • CLI: rtblint validate request.json or rtblint validate --stdin

Start with the bid request tester to see the output shape, then wire the same checks into your pipeline.