ID5 mobile S2S needs partner, ts, bundle, ver, ip, and ua
ID5 documents the in-app fetch as POST JSON to /ga/v1. partner is the Partner Number. Cookie sync GIFs are not this pack. CTV /gc/v1 is vendor/id5-ctv.
partner is the ID5 Partner Number
A /ga/v1 body with no partner is not tied to an ID5 account.
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 |
|---|---|---|---|---|
|
optional | ID5 accepts a JSON object as its request body. Native JSON type: object. | vendor.id5.body..invalid |
docs |
partner |
required | It is the ID5 Partner Number. ID5 documents partner as required on /ga/v1. Native JSON type: integer. Minimum numeric value: -2147483648. Maximum numeric value: 2147483647. Fix: Set partner to the Partner Number ID5 issued. Use 173 only while testing. | vendor.id5.body.partner.missingvendor.id5.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. Native JSON type: string. Fix: Set ts to an ISO-8601 timestamp with offset, such as 2013-02-01T12:52:34+09:00. | vendor.id5.body.ts.missingvendor.id5.body.ts.emptyvendor.id5.body.ts.invalid |
docs |
bundle |
required | It is the app identifier. ID5 documents bundle as required: package name on Android, numeric ID on iOS. Native JSON type: string. Fix: Set bundle to the app package name or iOS numeric ID. | vendor.id5.body.bundle.missingvendor.id5.body.bundle.emptyvendor.id5.body.bundle.invalid |
docs |
ver |
required | It is the application version. ID5 documents ver as required. Fix: Set ver to the app version string. | vendor.id5.body.ver.missingvendor.id5.body.ver.empty |
docs |
ip |
required | It is the IPv4 address closest to the device. ID5 documents ip as required. Native JSON type: string. Fix: Send the device-facing IPv4 address, unhashed. | vendor.id5.body.ip.missingvendor.id5.body.ip.emptyvendor.id5.body.ip.invalid |
docs |
ua |
required | It is the device default-browser user agent. ID5 documents ua as required. Native JSON type: string. Fix: Send the raw user agent string, unhashed. | vendor.id5.body.ua.missingvendor.id5.body.ua.emptyvendor.id5.body.ua.invalid |
docs |
hem |
optional | It is a SHA-256 hash of the cleansed email. ID5 documents hem as sha256 when present. Native JSON type: string. Fix: Normalize and SHA-256 hash the identifier, then send its 64-character hexadecimal digest. | vendor.id5.body.hem.emptyvendor.id5.body.hem.invalid |
docs |
phone |
optional | It is a SHA-256 hash of the cleansed phone number. Native JSON type: string. Fix: Normalize and SHA-256 hash the identifier, then send its 64-character hexadecimal digest. | vendor.id5.body.phone.emptyvendor.id5.body.phone.invalid |
docs |
provider |
optional | ID5 documents provider as an optional string request field. Native JSON type: string. | vendor.id5.body.provider.emptyvendor.id5.body.provider.invalid |
docs |
signature |
optional | ID5 documents signature as an optional string request field. Native JSON type: string. | vendor.id5.body.signature.emptyvendor.id5.body.signature.invalid |
docs |
gdpr_consent |
optional | ID5 documents gdpr_consent as an optional string request field. Native JSON type: string. | vendor.id5.body.gdpr_consent.emptyvendor.id5.body.gdpr_consent.invalid |
docs |
gpp_string |
optional | ID5 documents gpp_string as an optional string request field. Native JSON type: string. | vendor.id5.body.gpp_string.emptyvendor.id5.body.gpp_string.invalid |
docs |
region |
optional | ID5 accepts ISO 3166-2 subdivision codes, or a two-letter state code for the USA. Native JSON type: string. | vendor.id5.body.region.emptyvendor.id5.body.region.invalid |
docs |
city |
optional | ID5 names the UN/LOCODE format, two country letters followed by three letters or digits 2 through 9. Native JSON type: string. | vendor.id5.body.city.emptyvendor.id5.body.city.invalid |
docs |
accept_language |
optional | ID5 requires compatibility with the browser Accept-Language header. RFC 9110 and RFC 4647 define basic language ranges and optional quality weights from 0 to 1 with at most three fractional digits. Evidence: formal standard. Native JSON type: string. | vendor.id5.body.accept_language.emptyvendor.id5.body.accept_language.invalid |
docs |
gdpr |
optional | ID5 documents 1 when GDPR applies and 0 otherwise. Native JSON type: integer. Minimum numeric value: 0. Maximum numeric value: 1. | vendor.id5.body.gdpr.invalid |
docs |
allowed_vendors |
optional | ID5 documents allowed_vendors as an array of vendor identifier strings. Native JSON type: array. | vendor.id5.body.allowed_vendors.invalid |
docs |
allowed_vendors[] |
optional | ID5 accepts ID5-prefixed partner identifiers or numeric IAB vendor IDs. Native JSON type: string. | vendor.id5.body.allowed_vendors[].emptyvendor.id5.body.allowed_vendors[].invalid |
docs |
us_privacy |
optional | ID5 accepts the IAB US Privacy String. Native JSON type: string. | vendor.id5.body.us_privacy.emptyvendor.id5.body.us_privacy.invalid |
docs |
gpp_sid |
optional | ID5 allows one GPP section ID or at most two comma-separated section IDs. Native JSON type: string. | vendor.id5.body.gpp_sid.emptyvendor.id5.body.gpp_sid.invalid |
docs |
idfv |
optional | ID5 documents the Apple vendor identifier in UUID format. Native JSON type: string. | vendor.id5.body.idfv.emptyvendor.id5.body.idfv.invalid |
docs |
ipv6 |
optional | ID5 documents ipv6 as the device IPv6 address. Native JSON type: string. | vendor.id5.body.ipv6.emptyvendor.id5.body.ipv6.invalid |
docs |
country |
optional | ID5 documents country as an ISO 3166-1 alpha-2 code. Native JSON type: string. | vendor.id5.body.country.emptyvendor.id5.body.country.invalid |
docs |
segments |
optional | ID5 documents segments as an array of objects. Native JSON type: array. | vendor.id5.body.segments.invalid |
docs |
segments[] |
optional | Every ID5 segment entry is an object. Native JSON type: object. | vendor.id5.body.segments[].invalid |
docs |
name |
optional | ID5 documents name as an optional string request field. Native JSON type: string. | vendor.id5.body.name.emptyvendor.id5.body.name.invalid |
docs |
domain |
optional | ID5 documents domain as an optional string request field. Native JSON type: string. | vendor.id5.body.domain.emptyvendor.id5.body.domain.invalid |
docs |
puid |
optional | ID5 documents puid as an optional string request field. Native JSON type: string. | vendor.id5.body.puid.emptyvendor.id5.body.puid.invalid |
docs |
maid |
optional | ID5 documents the device advertising identifier in UUID format. Native JSON type: string. | vendor.id5.body.maid.emptyvendor.id5.body.maid.invalid |
docs |
maid_type |
optional | ID5 documents idfa and gaid as device identifier types. Native JSON type: string. | vendor.id5.body.maid_type.emptyvendor.id5.body.maid_type.invalid |
docs |
att |
optional | ID5 declares ATT boolean while also illustrating binary integer values. Native JSON type: boolean or integer. Minimum numeric value: 0. Maximum numeric value: 1. | vendor.id5.body.att.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.body.unhashed_email |
docs |
body.us_region_format |
required | ID5 specifies a two-letter state code for USA regions. | vendor.id5.body.us_region_format |
docs |
body.non_us_region_iso_format |
required | ID5 permits the two-letter state abbreviation only for the United States. Other supplied countries require an ISO 3166-2 region code. | vendor.id5.body.non_us_region_iso_format |
docs |
destination |
required | Every segment needs its destination IAB vendor identifier. Body scope: segments[]. Native JSON type: string. | vendor.id5.body.destination.missingvendor.id5.body.destination.emptyvendor.id5.body.destination.invalid |
docs |
ids |
required | Every segment needs an array of string segment identifiers. Body scope: segments[]. Native JSON type: array. | vendor.id5.body.ids.missingvendor.id5.body.ids.invalid |
docs |
ids[] |
optional | Segment identifiers are strings. Body scope: segments[]. Native JSON type: string. | vendor.id5.body.ids[].emptyvendor.id5.body.ids[].invalid |
docs |
method |
required | The published endpoint accepts an HTTP POST request. Complete HTTP capture contract. | vendor.id5.http.method.missingvendor.id5.http.method.emptyvendor.id5.http.method.invalid |
docs |
content_type |
required | The request Content-Type is application/json; MIME parameters do not change its media type. Complete HTTP capture contract. | vendor.id5.http.content_type.missingvendor.id5.http.content_type.emptyvendor.id5.http.content_type.invalid |
docs |
body_encoding |
required | The published request carries a JSON entity. Once application/json is known, an absent body is invalid. Opaque compressed captures and unresolved MIME macros are left unverified. Complete HTTP capture contract. Applies when {"kind":"all","conditions":[{"kind":"not","condition":{"kind":"value_in","param":"body_encoding","values":["unsupported"]}},{"kind":"any","conditions":[{"kind":"value_in","param":"body_encoding","values":["none"]},{"kind":"value_in","param":"content_type","values":["application/json"]}]}]}. | vendor.id5.http.body_encoding.missingvendor.id5.http.body_encoding.emptyvendor.id5.http.body_encoding.invalid |
docs |
Validate a payload
pixellint validate json @payload.json --rulepack vendor/id5
Try this failing payload in the playground. ID5 mobile S2S missing partner.
{"ts":"2013-02-01T12:52:34+09:00","bundle":"com.foo.mygame","ver":"1.2.0","ip":"198.51.100.42","ua":"Mozilla/5.0"}
cargo install pixellint
·
npm install pixellint