pixellint

FreeWheel GET ad requests need nw and a site section

FreeWheel documents setNetwork as required. That call sets nw. setSiteSection sets csid or ssid. The pack separates the global query group from slot groups and checks documented slot fields within each group. Uplynk documents the constructed GET on /ad/g/1. StickyAds cdn.stickyadstv.com is a separate request surface.

nw is the distributor network ID

FreeWheel marks setNetwork as required. An /ad/g/ request without nw is not tied to a network.

Rule: vendor.freewheel.query.nw.missing

What this pack matches

Hosts
v.fwmrm.net
Paths
/ad/g/
Vendor docs
vi.freewheel.tv/static/api_docs/html5/

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
nw required It is the distributor network ID. FreeWheel documents setNetwork as required, and that call sets nw on the ad request. Query group scope, starting at index 0 through 0. Fix: Set nw to the network ID from your FreeWheel sales engineer. vendor.freewheel.query.nw.missing
vendor.freewheel.query.nw.empty
vendor.freewheel.query.nw.invalid
docs
csid optional It is a custom site section ID. FreeWheel setSiteSection with a custom id sets csid. FreeWheel ids use ssid instead. Query group scope, starting at index 0 through 0. Fix: Send csid for a custom site section, or ssid for a FreeWheel site section id. vendor.freewheel.query.csid.empty docs
ssid optional It is a FreeWheel site section ID. FreeWheel setSiteSection with a FreeWheel id sets ssid. Query group scope, starting at index 0 through 0. Fix: Send ssid for a FreeWheel site section id, or csid for a custom one. vendor.freewheel.query.ssid.empty docs
caid optional It is the custom video asset ID. FreeWheel setVideoAsset with ID_TYPE_CUSTOM sets caid on the ad request. Query group scope, starting at index 0 through 0. Fix: Send caid for a custom asset id, or asid for a FreeWheel asset id. vendor.freewheel.query.caid.empty docs
asid optional It is the FreeWheel video asset ID. FreeWheel setVideoAsset with ID_TYPE_FW sets asid on the ad request. Query group scope, starting at index 0 through 0. Fix: Send asid for a FreeWheel asset id, or caid for a custom one. vendor.freewheel.query.asid.empty docs
flag optional It is the player capability flags. FreeWheel setCapability and setVideoAsset autoPlayType write flag on the ad request. Query group scope, starting at index 0 through 0. Fix: Send flag as the capability string the player supports, such as +play-uapl, or drop the empty pair. vendor.freewheel.query.flag.empty docs
prof recommended It is the player profile. FreeWheel setProfile sets prof on the ad request. Uplynk documents ad.prof as required on the constructed GET. Query group scope, starting at index 0 through 0. Fix: Send prof as the player profile from FreeWheel, such as 14611:Vod. vendor.freewheel.query.prof.missing
vendor.freewheel.query.prof.empty
docs
asnw optional FreeWheel documents asnw as a numeric network, fallback, or candidate ad identifier. Query group scope, starting at index 0 through 0. vendor.freewheel.query.asnw.empty
vendor.freewheel.query.asnw.invalid
docs
ssnw optional FreeWheel documents ssnw as a numeric network, fallback, or candidate ad identifier. Query group scope, starting at index 0 through 0. vendor.freewheel.query.ssnw.empty
vendor.freewheel.query.ssnw.invalid
docs
afid optional FreeWheel SDK accepts nonempty string fallback IDs. The HTML5 reference describes numeric IDs, so a nonnumeric fallback ID is advisory. Query group scope, starting at index 0 through 0. Value diagnostic severity: warning. Fix: Use the fallback ID configured in FreeWheel. The SDK accepts string IDs. vendor.freewheel.query.afid.empty
vendor.freewheel.query.afid.invalid
docs
sfid optional FreeWheel SDK accepts nonempty string fallback IDs. The HTML5 reference describes numeric IDs, so a nonnumeric fallback ID is advisory. Query group scope, starting at index 0 through 0. Value diagnostic severity: warning. Fix: Use the fallback ID configured in FreeWheel. The SDK accepts string IDs. vendor.freewheel.query.sfid.empty
vendor.freewheel.query.sfid.invalid
docs
cana optional FreeWheel serializes candidate ad IDs as a comma-separated list. Each candidate ID is a nonnegative integer. Query group scope, starting at index 0 through 0. vendor.freewheel.query.cana.empty
vendor.freewheel.query.cana.invalid
docs
vdur optional FreeWheel documents vdur as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vdur.empty
vendor.freewheel.query.vdur.invalid
docs
vprn optional FreeWheel documents vprn as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vprn.empty
vendor.freewheel.query.vprn.invalid
docs
pvrn optional FreeWheel documents pvrn as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.pvrn.empty
vendor.freewheel.query.pvrn.invalid
docs
vtpo optional FreeWheel documents vtpo as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vtpo.empty
vendor.freewheel.query.vtpo.invalid
docs
vrdu optional FreeWheel documents vrdu as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vrdu.empty
vendor.freewheel.query.vrdu.invalid
docs
tpos optional FreeWheel documents tpos as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.tpos.empty
vendor.freewheel.query.tpos.invalid
docs
cpsq optional FreeWheel documents cpsq as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.cpsq.empty
vendor.freewheel.query.cpsq.invalid
docs
maxd optional FreeWheel documents maxd as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.maxd.empty
vendor.freewheel.query.maxd.invalid
docs
mind optional FreeWheel documents mind as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.mind.empty
vendor.freewheel.query.mind.invalid
docs
maxa optional FreeWheel documents maxa as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 0 through 0. vendor.freewheel.query.maxa.empty
vendor.freewheel.query.maxa.invalid
docs
ssto optional HTML5 reference describes a positive integer subsession token. SDK live mode auto-generates positive fractional tokens of at least 1, so differences from the reference integer shape are advisory. Query group scope, starting at index 0 through 0. Value diagnostic severity: warning. Minimum numeric value: 1. vendor.freewheel.query.ssto.empty
vendor.freewheel.query.ssto.invalid
docs
vip optional FreeWheel documents vip as the visitor IPv4 address. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vip.empty
vendor.freewheel.query.vip.invalid
docs
asml optional FreeWheel documents the asml field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.asml.empty docs
vdty optional FreeWheel SDK video duration types serialize as exact or variable. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vdty.empty
vendor.freewheel.query.vdty.invalid
docs
vcid optional FreeWheel documents the vcid field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.vcid.empty docs
mode optional FreeWheel SDK request modes serialize as on-demand or live. Query group scope, starting at index 0 through 0. vendor.freewheel.query.mode.empty
vendor.freewheel.query.mode.invalid
docs
slid optional FreeWheel documents the slid field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.slid.empty docs
slau optional FreeWheel documents the slau field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.slau.empty docs
envp optional FreeWheel documents the envp field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.envp.empty docs
prct optional FreeWheel documents the prct field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.prct.empty docs
sgid optional FreeWheel documents the sgid field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.sgid.empty docs
ltlg optional FreeWheel documents the ltlg field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.ltlg.empty docs
cd optional FreeWheel documents the cd field in its SDK-to-request parameter mapping. Query group scope, starting at index 0 through 0. vendor.freewheel.query.cd.empty docs
site_section_required required The ad request has neither csid nor ssid. FreeWheel setSiteSection sets one of the two. Uplynk documents csid when locationDesc is undefined. Query group scope, starting at index 0 through 0. Fix: Send csid for a custom site section, or ssid for a FreeWheel site section id. vendor.freewheel.site_section_required docs
tpos optional FreeWheel temporal slot time positions are nonnegative seconds. The SDK refuses a slot with a negative time position. Query group scope, starting at index 1 through 1. Minimum numeric value: 0. vendor.freewheel.query.tpos.empty
vendor.freewheel.query.tpos.invalid
docs
cpsq optional FreeWheel documents cpsq as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 1 through 1. vendor.freewheel.query.cpsq.empty
vendor.freewheel.query.cpsq.invalid
docs
maxd optional FreeWheel documents maxd as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 1 through 1. vendor.freewheel.query.maxd.empty
vendor.freewheel.query.maxd.invalid
docs
mind optional FreeWheel documents mind as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 1 through 1. vendor.freewheel.query.mind.empty
vendor.freewheel.query.mind.invalid
docs
maxa optional FreeWheel documents maxa as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 1 through 1. vendor.freewheel.query.maxa.empty
vendor.freewheel.query.maxa.invalid
docs
slid optional FreeWheel documents the slid field in its SDK-to-request parameter mapping. Query group scope, starting at index 1 through 1. vendor.freewheel.query.slid.empty docs
slau optional FreeWheel documents the slau field in its SDK-to-request parameter mapping. Query group scope, starting at index 1 through 1. vendor.freewheel.query.slau.empty docs
envp optional FreeWheel documents the envp field in its SDK-to-request parameter mapping. Query group scope, starting at index 1 through 1. vendor.freewheel.query.envp.empty docs
prct optional FreeWheel documents the prct field in its SDK-to-request parameter mapping. Query group scope, starting at index 1 through 1. vendor.freewheel.query.prct.empty docs
sgid optional FreeWheel documents the sgid field in its SDK-to-request parameter mapping. Query group scope, starting at index 1 through 1. vendor.freewheel.query.sgid.empty docs
ptgt optional SDK temporal slot marker a; page slot marker s. Other raw transport markers are not contracted. Query group scope, starting at index 1 through 1. vendor.freewheel.query.ptgt.empty docs
tpos optional FreeWheel temporal slot time positions are nonnegative seconds. The SDK refuses a slot with a negative time position. Query group scope, starting at index 2. Minimum numeric value: 0. vendor.freewheel.query.tpos.empty
vendor.freewheel.query.tpos.invalid
docs
cpsq optional FreeWheel documents cpsq as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 2. vendor.freewheel.query.cpsq.empty
vendor.freewheel.query.cpsq.invalid
docs
maxd optional FreeWheel documents maxd as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 2. vendor.freewheel.query.maxd.empty
vendor.freewheel.query.maxd.invalid
docs
mind optional FreeWheel documents mind as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 2. vendor.freewheel.query.mind.empty
vendor.freewheel.query.mind.invalid
docs
maxa optional FreeWheel documents maxa as a numeric duration, time position, sequence, count, or random value. Query group scope, starting at index 2. vendor.freewheel.query.maxa.empty
vendor.freewheel.query.maxa.invalid
docs
slid optional FreeWheel documents the slid field in its SDK-to-request parameter mapping. Query group scope, starting at index 2. vendor.freewheel.query.slid.empty docs
slau optional FreeWheel documents the slau field in its SDK-to-request parameter mapping. Query group scope, starting at index 2. vendor.freewheel.query.slau.empty docs
envp optional FreeWheel documents the envp field in its SDK-to-request parameter mapping. Query group scope, starting at index 2. vendor.freewheel.query.envp.empty docs
prct optional FreeWheel documents the prct field in its SDK-to-request parameter mapping. Query group scope, starting at index 2. vendor.freewheel.query.prct.empty docs
sgid optional FreeWheel documents the sgid field in its SDK-to-request parameter mapping. Query group scope, starting at index 2. vendor.freewheel.query.sgid.empty docs
slid required Each SDK Type B temporal slot needs its own slid value. Query group scope, starting at index 2. vendor.freewheel.query.slid.missing docs
slau required Each SDK Type B temporal slot needs its own slau value. Query group scope, starting at index 2. vendor.freewheel.query.slau.missing docs
tpos required Each SDK Type B temporal slot needs its own tpos value. Query group scope, starting at index 2. vendor.freewheel.query.tpos.missing docs
ptgt optional SDK temporal slot marker a; page slot marker s. Other raw transport markers are not contracted. Query group scope, starting at index 2. vendor.freewheel.query.ptgt.empty docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/freewheel

Try this failing payload in the playground. FreeWheel /ad/g/ missing nw.

https://g1.v.fwmrm.net/ad/g/1?csid=demo_site&prof=167119:global

cargo install pixellint · npm install pixellint