Rule reference

ARTF payload root is not a JSON object

artf.payload.root_not_objecterrorARTF envelope

The payload parses but its root is not an object. An RTBRequest and an RTBResponse are each a single message.

What it means

The document parses as JSON, but the root is an array, a string, or a bare literal. Both ARTF messages are single protobuf messages, so their JSON form is always one object.

Why it matters

The usual cause is sending the mutation array on its own rather than the RTBResponse that carries it. The mutations are a repeated field inside the message, not the message.

How to fix it

Send the whole message: an object with id, mutations, and metadata for a response, or the RTBRequest envelope for a request.

Example that trips it

[{ "intent": "ACTIVATE_DEALS", "op": "OPERATION_ADD", "path": "/imp/imp-1" }]

The mutation list sent where the RTBResponse belongs.

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.