pixellint

vendor/adjust · vendor documented

Adjust server-to-server events

The S2S event endpoint takes query or form parameters, not the client SDK hit. ip_address is IPv4 only. revenue and currency travel together. IP and user agent stay unhashed.

revenue needs a currency code

Adjust documents revenue in full currency units together with an ISO 4217 code. Sending 123.4 without EUR is an incomplete revenue event.

Rule: vendor.adjust.revenue_requires_currency

What this pack matches

Hosts
s2s.adjust.com
Paths
…/event…
Vendor docs
dev.adjust.com/en/api/s2s-api/events/

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
app_token required It is the Adjust app token from the dashboard, and the endpoint requires it on every request. Fix: Send the app token from the Adjust dashboard as `app_token`. vendor.adjust.param.app_token.missing
vendor.adjust.param.app_token.empty
docs
event_token required It is the Adjust event token from the dashboard, and the endpoint requires it on every request. Fix: Send the event token from the Adjust dashboard as `event_token`. vendor.adjust.param.event_token.missing
vendor.adjust.param.event_token.empty
docs
s2s required Adjust documents a hardcoded `s2s=1` so the endpoint treats the request as server-to-server. Fix: Add `s2s=1`. vendor.adjust.param.s2s.missing
vendor.adjust.param.s2s.empty
vendor.adjust.param.s2s.invalid
docs
created_at optional Adjust documents `created_at` as an ISO 8601 timestamp. `created_at_unix` is the Unix-seconds alternative. Fix: Send ISO 8601, such as `2017-01-02T15:04:05.000+0000`, or send `created_at_unix` instead. vendor.adjust.param.created_at.empty
vendor.adjust.param.created_at.invalid
docs
created_at_unix optional Adjust documents it as a Unix timestamp in seconds. Fix: Send seconds, not milliseconds. vendor.adjust.param.created_at_unix.empty
vendor.adjust.param.created_at_unix.invalid
docs
revenue optional It is the revenue in full currency units, such as `149.99` for $149.99. Adjust documents a minimum of 0.001 and requires `currency` with it. Fix: Send `revenue` as a number with no currency symbol, together with `currency`. vendor.adjust.param.revenue.empty
vendor.adjust.param.revenue.invalid
docs
currency optional It is the ISO 4217 currency code for a revenue event. Adjust documents it together with `revenue`. Fix: Use the three-letter code, such as `EUR`, together with `revenue`. vendor.adjust.param.currency.empty
vendor.adjust.param.currency.invalid
docs
environment optional Adjust documents `sandbox` or `production`, and defaults to production when it is omitted. Fix: Send `environment=sandbox` for testing, or `environment=production` for live traffic. vendor.adjust.param.environment.empty
vendor.adjust.param.environment.invalid
docs
ip_address optional It is the device IP address, sent unhashed. Adjust documents IPv4 only; IPv6 is not supported. Fix: Send the device IPv4 address, not a digest and not an IPv6 address. vendor.adjust.param.ip_address.empty
vendor.adjust.param.ip_address.invalid
docs
user_agent optional It is the device user agent, URL-encoded, sent unhashed. Fix: Send the raw user agent string, URL-encoded. vendor.adjust.param.user_agent.empty docs
idfa optional iOS Identifier for Advertisers. Adjust requires a device ID such as `idfa` or `gps_adid`. vendor.adjust.param.idfa.empty docs
gps_adid optional Android advertising ID. Adjust requires a device ID such as `idfa` or `gps_adid`. vendor.adjust.param.gps_adid.empty docs
idfv optional iOS Identifier for Vendor. Adjust documents uppercase with hyphens. Fix: Send the IDFV in uppercase with hyphens, such as `D2CADB5F-410F-4963-AC0C-2A78534BDF1E`. vendor.adjust.param.idfv.empty
vendor.adjust.param.idfv.invalid
docs
android_id optional Raw Android ID. Adjust documents lowercase, without hyphens. Fix: Send the Android ID in lowercase with no hyphens. vendor.adjust.param.android_id.empty
vendor.adjust.param.android_id.invalid
docs
android_id_lower_md5 optional Hashed Android ID. Adjust documents lowercase MD5. Fix: Send a 32-character lowercase MD5 hex digest. vendor.adjust.param.android_id_lower_md5.empty
vendor.adjust.param.android_id_lower_md5.invalid
docs
android_id_lower_sha1 optional Hashed Android ID. Adjust documents lowercase SHA1. Fix: Send a 40-character lowercase SHA1 hex digest. vendor.adjust.param.android_id_lower_sha1.empty
vendor.adjust.param.android_id_lower_sha1.invalid
docs
android_id_upper_md5 optional Hashed Android ID. Adjust documents uppercase MD5. Fix: Send a 32-character uppercase MD5 hex digest. vendor.adjust.param.android_id_upper_md5.empty
vendor.adjust.param.android_id_upper_md5.invalid
docs
android_id_upper_sha1 optional Hashed Android ID. Adjust documents uppercase SHA1. Fix: Send a 40-character uppercase SHA1 hex digest. vendor.adjust.param.android_id_upper_sha1.empty
vendor.adjust.param.android_id_upper_sha1.invalid
docs
imei optional Raw IMEI, without hyphens. docs
imei_lower_md5 optional Hashed IMEI. Adjust documents lowercase MD5, without hyphens. Fix: Send a 32-character lowercase MD5 hex digest. vendor.adjust.param.imei_lower_md5.empty
vendor.adjust.param.imei_lower_md5.invalid
docs
meid optional Raw MEID. Adjust documents uppercase, without hyphens. Fix: Send the MEID in uppercase with no hyphens. vendor.adjust.param.meid.empty
vendor.adjust.param.meid.invalid
docs
win_naid optional Windows network adapter ID. docs
win_hwid optional Windows Store hardware ID. docs
adid optional The Adjust identifier associated with the device. Useful for identifying LAT users on iOS without IDFA. vendor.adjust.param.adid.empty docs
callback_params optional It is a JSON object of string callback key-value pairs. Adjust documents it URL-encoded, with no nested objects. Fix: Send a JSON object such as `{"f0o":"bar"}`, URL-encoded. Do not nest objects. vendor.adjust.param.callback_params.empty
vendor.adjust.param.callback_params.invalid
docs
partner_params optional It is a JSON object of string partner key-value pairs. Adjust documents it URL-encoded, with no nested objects. Fix: Send a JSON object such as `{"f0o":"bar"}`, URL-encoded. Do not nest objects. vendor.adjust.param.partner_params.empty
vendor.adjust.param.partner_params.invalid
docs
device_id_required required The request carries no device identifier. Adjust requires an advertising ID such as `idfa` or `gps_adid`, or one of the other documented device IDs. Fix: Send `idfa` for iOS or `gps_adid` for Android, or another documented device ID. vendor.adjust.device_id_required docs
hashed_plaintext_field required This field looks like a SHA-256 digest, but Adjust documents the device IP, user agent, and advertising IDs as unhashed. Fix: Send the raw IPv4 address, user agent, or advertising ID. vendor.adjust.hashed_plaintext_field docs
revenue_requires_currency required The event sends `revenue` without `currency`. Adjust documents both on revenue events. Fix: Add `currency` as a three-letter ISO 4217 code. vendor.adjust.revenue_requires_currency docs
currency_requires_revenue required The event sends `currency` without `revenue`. Adjust documents both on revenue events. Fix: Add `revenue` as a number in full currency units, such as `123.4`. vendor.adjust.currency_requires_revenue docs

Validate a payload

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

Try this failing payload in the playground. Adjust S2S revenue without currency.

https://s2s.adjust.com/event?s2s=1&event_token=f0ob4r&app_token=4w565xzmb54d&idfa=D2CADB5F-410F-4963-AC0C-2A78534BDF1E&revenue=123.4

cargo install pixellint · npm install pixellint