pixellint

The Trade Desk conversion batches link HTTP transport to event contracts.

Real-time conversion batches use data records with published advertiser, pixel and identity alternatives. Native JSON checks also cover commerce items, privacy records and processing options.

A complete HTTP capture adds method and content-type checks to the event body. Account mapping and regional policy applicability remain external.

Apply the contracts within their published source scope.

A complete HTTP capture adds method and content-type checks to the event body. Account mapping and regional policy applicability remain external.

What this pack matches

Hosts
insight.adsrvr.org
Paths
/track/realtimeconversion
Vendor docs
open.thetradedesk.com/provider/docsApp/GuidesProvider/measure/doc/post-track-realtimeconversion

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
https_required required The Real-Time Conversion Events API requires HTTPS. vendor.the-trade-desk-conversions.https_required docs
required Native JSON type: object. vendor.the-trade-desk-conversions.body..missing
vendor.the-trade-desk-conversions.body..invalid
docs
data required Native JSON type: array. vendor.the-trade-desk-conversions.body.data.missing
vendor.the-trade-desk-conversions.body.data.invalid
docs
body_size_advisory recommended Request exceeds a conservative binary interpretation of the published 28.6 MB size ceiling. vendor.the-trade-desk-conversions.body_size_advisory docs
required Body scope: data[]. Native JSON type: object. vendor.the-trade-desk-conversions.body..missing
vendor.the-trade-desk-conversions.body..invalid
docs
adv optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.adv.invalid docs
merchant_id optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.merchant_id.invalid docs
pixel_id optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.pixel_id.invalid docs
pixel_ids optional Body scope: data[]. Native JSON type: array. Minimum array items: 1. vendor.the-trade-desk-conversions.body.pixel_ids.invalid docs
pixel_ids[] optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.pixel_ids[].invalid docs
tracker_id deprecated Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.tracker_id.deprecated
vendor.the-trade-desk-conversions.body.tracker_id.invalid
docs
upixel_id deprecated Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.upixel_id.deprecated
vendor.the-trade-desk-conversions.body.upixel_id.invalid
docs
value optional Body scope: data[]. Native JSON type: number. vendor.the-trade-desk-conversions.body.value.invalid docs
currency optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.currency.empty
vendor.the-trade-desk-conversions.body.currency.invalid
docs
event_name optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.event_name.invalid docs
client_ip optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.client_ip.empty
vendor.the-trade-desk-conversions.body.client_ip.invalid
docs
referrer_url optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.referrer_url.invalid docs
adid optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.adid.invalid docs
adid_type optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.adid_type.empty
vendor.the-trade-desk-conversions.body.adid_type.invalid
docs
uid2_token optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.uid2_token.invalid docs
euid_token optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.euid_token.invalid docs
idl optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.idl.empty
vendor.the-trade-desk-conversions.body.idl.invalid
docs
imp optional Body scope: data[]. Native JSON type: string. Minimum decoded characters: 36. Maximum decoded characters: 36. vendor.the-trade-desk-conversions.body.imp.invalid docs
country optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.country.invalid docs
region optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.region.invalid docs
NielsenDMA optional Body scope: data[]. Native JSON type: integer or string. vendor.the-trade-desk-conversions.body.NielsenDMA.empty
vendor.the-trade-desk-conversions.body.NielsenDMA.invalid
docs
city optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.city.invalid docs
zip optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.zip.invalid docs
order_id optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.order_id.invalid docs
items optional Body scope: data[]. Native JSON type: array. Minimum array items: 1. vendor.the-trade-desk-conversions.body.items.invalid docs
privacy_settings optional Body scope: data[]. Native JSON type: array. vendor.the-trade-desk-conversions.body.privacy_settings.invalid docs
data_processing_option optional Body scope: data[]. Native JSON type: object. vendor.the-trade-desk-conversions.body.data_processing_option.invalid docs
tdid optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.tdid.empty
vendor.the-trade-desk-conversions.body.tdid.invalid
docs
daid optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.daid.empty
vendor.the-trade-desk-conversions.body.daid.invalid
docs
idfa optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.idfa.empty
vendor.the-trade-desk-conversions.body.idfa.invalid
docs
aaid optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.aaid.empty
vendor.the-trade-desk-conversions.body.aaid.invalid
docs
naid optional Body scope: data[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.naid.empty
vendor.the-trade-desk-conversions.body.naid.invalid
docs
td_values… optional Body scope: data[]. Native JSON type: string. Maximum decoded characters: 150. vendor.the-trade-desk-conversions.body.td_values.invalid docs
owner_missing required Provide the advertiser or merchant identifier. Body scope: data[]. vendor.the-trade-desk-conversions.owner_missing docs
pixel_missing required Provide a current pixel identifier or a documented deprecated identifier. Body scope: data[]. vendor.the-trade-desk-conversions.pixel_missing docs
purchase_value_missing required Purchase events require a revenue value. Body scope: data[]. vendor.the-trade-desk-conversions.purchase_value_missing docs
adid_type_missing required Provided advertising IDs require an ID type. Body scope: data[]. vendor.the-trade-desk-conversions.adid_type_missing docs
us_region_missing required Events in United States require a region. Body scope: data[]. vendor.the-trade-desk-conversions.us_region_missing docs
adid_tdid_invalid recommended The documented device ID family uses a 36-character GUID. Body scope: data[]. vendor.the-trade-desk-conversions.adid_tdid_invalid docs
adid_idfa_invalid recommended The documented device ID family uses a 36-character GUID. Body scope: data[]. vendor.the-trade-desk-conversions.adid_idfa_invalid docs
adid_aaid_invalid recommended The documented device ID family uses a 36-character GUID. Body scope: data[]. vendor.the-trade-desk-conversions.adid_aaid_invalid docs
adid_daid_invalid recommended The documented device ID family uses a 36-character GUID. Body scope: data[]. vendor.the-trade-desk-conversions.adid_daid_invalid docs
adid_naid_invalid recommended The documented device ID family uses a 36-character GUID. Body scope: data[]. vendor.the-trade-desk-conversions.adid_naid_invalid docs
adid_idl_invalid recommended The documented RampID lengths are 49 and 70 characters. Body scope: data[]. vendor.the-trade-desk-conversions.adid_idl_invalid docs
privacy_type_duplicate required Only one privacy record per regulation type is permitted in an event. Body scope: data[]. vendor.the-trade-desk-conversions.privacy_type_duplicate docs
required Body scope: data[].items[]. Native JSON type: object. vendor.the-trade-desk-conversions.body..missing
vendor.the-trade-desk-conversions.body..invalid
docs
item_code required Body scope: data[].items[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.item_code.missing
vendor.the-trade-desk-conversions.body.item_code.invalid
docs
name optional Body scope: data[].items[]. Native JSON type: string. Maximum decoded characters: 150. vendor.the-trade-desk-conversions.body.name.invalid docs
qty optional Body scope: data[].items[]. Native JSON type: integer. vendor.the-trade-desk-conversions.body.qty.invalid docs
price optional Body scope: data[].items[]. Native JSON type: number. vendor.the-trade-desk-conversions.body.price.invalid docs
cat optional Body scope: data[].items[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.cat.invalid docs
item_brand optional Body scope: data[].items[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.item_brand.invalid docs
required Body scope: data[].privacy_settings[]. Native JSON type: object. vendor.the-trade-desk-conversions.body..missing
vendor.the-trade-desk-conversions.body..invalid
docs
privacy_type required Body scope: data[].privacy_settings[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.privacy_type.missing
vendor.the-trade-desk-conversions.body.privacy_type.empty
vendor.the-trade-desk-conversions.body.privacy_type.invalid
docs
is_applicable required Body scope: data[].privacy_settings[]. Native JSON type: boolean or integer. Minimum numeric value: 0. Maximum numeric value: 1. vendor.the-trade-desk-conversions.body.is_applicable.missing
vendor.the-trade-desk-conversions.body.is_applicable.invalid
docs
consent_string required Body scope: data[].privacy_settings[]. Native JSON type: string. vendor.the-trade-desk-conversions.body.consent_string.missing
vendor.the-trade-desk-conversions.body.consent_string.invalid
docs
privacy_gdpr_invalid required Applicable privacy settings require a structurally valid consent string. Body scope: data[].privacy_settings[]. vendor.the-trade-desk-conversions.privacy_gdpr_invalid docs
privacy_gpp_invalid required Applicable privacy settings require a structurally valid consent string. Body scope: data[].privacy_settings[]. vendor.the-trade-desk-conversions.privacy_gpp_invalid docs
required Body scope: data[].data_processing_option. Native JSON type: object. vendor.the-trade-desk-conversions.body..missing
vendor.the-trade-desk-conversions.body..invalid
docs
policies required Body scope: data[].data_processing_option. Native JSON type: array. vendor.the-trade-desk-conversions.body.policies.missing
vendor.the-trade-desk-conversions.body.policies.invalid
docs
policies[] optional Body scope: data[].data_processing_option. Native JSON type: string. vendor.the-trade-desk-conversions.body.policies[].empty
vendor.the-trade-desk-conversions.body.policies[].invalid
docs
region required Body scope: data[].data_processing_option. Native JSON type: string. vendor.the-trade-desk-conversions.body.region.missing
vendor.the-trade-desk-conversions.body.region.empty
vendor.the-trade-desk-conversions.body.region.invalid
docs
method required Complete HTTP capture contract. vendor.the-trade-desk-conversions.http.method.missing
vendor.the-trade-desk-conversions.http.method.empty
vendor.the-trade-desk-conversions.http.method.invalid
docs
content_type required Complete HTTP capture contract. vendor.the-trade-desk-conversions.http.content_type.missing
vendor.the-trade-desk-conversions.http.content_type.empty
vendor.the-trade-desk-conversions.http.content_type.invalid
docs
body optional Complete HTTP capture contract. Native JSON type: object. vendor.the-trade-desk-conversions.http.body.invalid docs
body_encoding optional Complete HTTP capture contract. docs

Validate a payload

pixellint validate request @request.json --rulepack vendor/the-trade-desk-conversions

Try this failing payload in the playground. A realtime conversion capture using GET instead of the documented POST.

{
  "url": "https://insight.adsrvr.org/track/realtimeconversion",
  "method": "GET",
  "headers": {
    "content-type": "application/json"
  },
  "body": "{\"data\":[]}"
}

cargo install pixellint · npm install pixellint