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.
What this pack matches
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.missingvendor.freewheel.query.nw.emptyvendor.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.missingvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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.emptyvendor.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