vendor/id5-ctv · vendor documented
ID5 CTV S2S needs partner, ts, appid, ver, ip, and ua
ID5 documents the CTV fetch as POST JSON to /gc/v1. appid is the store ID. Cookie sync GIFs are not this pack. Mobile in-app /ga/v1 is vendor/id5.
appid is the store ID, not bundle
A /gc/v1 body with no appid is not the published CTV fetch. Mobile in-app uses bundle on /ga/v1.
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 |
|---|---|---|---|---|
partner |
required | It is the ID5 Partner Number. ID5 documents partner as required on /gc/v1. Fix: Set partner to the Partner Number ID5 issued. Use 173 only while testing. | vendor.id5-ctv.body.partner.missingvendor.id5-ctv.body.partner.emptyvendor.id5-ctv.body.partner.invalid |
docs |
ts |
required | It is the request timestamp. ID5 documents ts as required, as an ISO-8601 string with a time zone offset. Fix: Set ts to an ISO-8601 timestamp with offset, such as 2013-02-01T12:52:34+09:00. | vendor.id5-ctv.body.ts.missingvendor.id5-ctv.body.ts.empty |
docs |
appid |
required | It is the store ID of the app. ID5 documents appid as required on /gc/v1. Fix: Set appid to the Apple App Store, Google Play, or equivalent store ID. | vendor.id5-ctv.body.appid.missingvendor.id5-ctv.body.appid.empty |
docs |
ver |
required | It is the application version. ID5 documents ver as required. Fix: Set ver to the app version string. | vendor.id5-ctv.body.ver.missingvendor.id5-ctv.body.ver.empty |
docs |
ip |
required | It is the IPv4 address closest to the device. ID5 documents ip as required. Fix: Send the device-facing IPv4 address, unhashed. | vendor.id5-ctv.body.ip.missingvendor.id5-ctv.body.ip.empty |
docs |
ua |
required | It is the device default-browser user agent. ID5 documents ua as required. Fix: Send the raw user agent string, unhashed. | vendor.id5-ctv.body.ua.missingvendor.id5-ctv.body.ua.empty |
docs |
hem |
optional | It is a SHA-256 hash of the cleansed email. ID5 documents hem as sha256 when present. Fix: Cleanse the email, hash it with SHA-256, and send 64 lowercase hex characters. | vendor.id5-ctv.body.hem.emptyvendor.id5-ctv.body.hem.invalid |
docs |
phone |
optional | It is a SHA-256 hash of the cleansed phone number. Fix: Cleanse the phone number, hash it with SHA-256, and send 64 lowercase hex characters. | vendor.id5-ctv.body.phone.emptyvendor.id5-ctv.body.phone.invalid |
docs |
body.unhashed_email |
required | A field carries what looks like a raw email address. ID5 documents hem as a SHA-256 digest of a cleansed email. Fix: Cleanse the email, hash it with SHA-256, and send it as hem. | vendor.id5-ctv.body.unhashed_email |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/id5-ctv
Try this failing payload in the playground. ID5 CTV S2S missing partner.
{"ts":"2023-09-19T12:32:34+02:00","appid":"ABCDE12345.com.example.foo","ver":"1.0","ip":"4.5.6.7","ua":"Mozilla/5.0"}
cargo install pixellint
·
npm install pixellint