pixellint

Amplitude identify needs api_key and identification

Not HTTP V2. Identify updates user properties. api_key is the project key. identification is a JSON object or array. Each object needs user_id or device_id. Group identify is vendor/amplitude-group-identify.

identification is required

Amplitude returns missing_event when identification is missing or empty. The 414 is GET with a URL that is too long. Use POST form in that case; pixellint still reads the same names on the query.

Rule: vendor.amplitude-identify.param.identification.empty

What this pack matches

Hosts
amplitude.com
Paths
/identify
Vendor docs
amplitude.com/docs/apis/analytics/identify

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
api_key required It is the project API key. Amplitude documents it as required on GET query and POST form. Fix: Send `api_key` with the Amplitude project API key. vendor.amplitude-identify.param.api_key.missing
vendor.amplitude-identify.param.api_key.empty
docs
identification required It is a JSON identification object or array. Amplitude documents it as required. Each object needs user_id or device_id. Fix: Send `identification` as JSON with `user_id` or `device_id`. vendor.amplitude-identify.param.identification.missing
vendor.amplitude-identify.param.identification.empty
docs
root optional Identification is an object or array of identification objects. Decoded body source: identification. Encoding: json. Native JSON type: object or array. Minimum array items: 1. vendor.amplitude-identify.body.root.invalid docs
root optional Each identification is an object. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.root.invalid docs
user_id optional The vendor documents `user_id` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.user_id.empty
vendor.amplitude-identify.body.user_id.invalid
docs
device_id optional The vendor documents `device_id` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.device_id.empty
vendor.amplitude-identify.body.device_id.invalid
docs
user_properties optional The vendor documents `user_properties` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. Maximum container depth: 40. vendor.amplitude-identify.body.user_properties.invalid docs
groups optional Amplitude accepts at most five group types and ten total scalar or array group memberships. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. Maximum object properties: 5. Maximum member values: 10. vendor.amplitude-identify.body.groups.invalid docs
app_version optional The vendor documents `app_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.app_version.invalid docs
platform optional The vendor documents `platform` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.platform.invalid docs
os_name optional The vendor documents `os_name` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.os_name.invalid docs
os_version optional The vendor documents `os_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.os_version.invalid docs
device_brand optional The vendor documents `device_brand` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.device_brand.invalid docs
device_manufacturer optional The vendor documents `device_manufacturer` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.device_manufacturer.invalid docs
device_model optional The vendor documents `device_model` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.device_model.invalid docs
carrier optional The vendor documents `carrier` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.carrier.invalid docs
country optional The vendor documents `country` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.country.invalid docs
region optional The vendor documents `region` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.region.invalid docs
city optional The vendor documents `city` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.city.invalid docs
dma optional The vendor documents `dma` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.dma.invalid docs
language optional The vendor documents `language` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.language.invalid docs
paying optional The vendor documents `paying` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.paying.invalid docs
start_version optional The vendor documents `start_version` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.start_version.invalid docs
user_properties.$set optional The vendor documents `user_properties.$set` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$set.invalid docs
user_properties.$setOnce optional The vendor documents `user_properties.$setOnce` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$setOnce.invalid docs
user_properties.$add optional The vendor documents `user_properties.$add` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$add.invalid docs
user_properties.$append optional The vendor documents `user_properties.$append` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$append.invalid docs
user_properties.$prepend optional The vendor documents `user_properties.$prepend` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$prepend.invalid docs
user_properties.$unset optional The vendor documents `user_properties.$unset` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$unset.invalid docs
user_properties.$preInsert optional The vendor documents `user_properties.$preInsert` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$preInsert.invalid docs
user_properties.$postInsert optional The vendor documents `user_properties.$postInsert` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$postInsert.invalid docs
user_properties.$remove optional The vendor documents `user_properties.$remove` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: object. vendor.amplitude-identify.body.user_properties.$remove.invalid docs
user_properties.$add.number… optional The vendor documents `user_properties.$add.number` in the request contract. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: number. vendor.amplitude-identify.body.user_properties.$add.number.invalid docs
groups.* optional A group name is a string or an array of strings. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string or array. vendor.amplitude-identify.body.groups.*.invalid docs
groups.*[] optional Every array-valued group name is a string. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Native JSON type: string. vendor.amplitude-identify.body.groups.*[].invalid docs
direct_property… forbidden When any operation is used, direct properties must be placed inside $set. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. Applies when {"kind":"any","conditions":[{"kind":"present","param":"user_properties.$set"},{"kind":"present","param":"user_properties.$setOnce"},{"kind":"present","param":"user_properties.$add"},{"kind":"present","param":"user_properties.$append"},{"kind":"present","param":"user_properties.$prepend"},{"kind":"present","param":"user_properties.$unset"},{"kind":"present","param":"user_properties.$preInsert"},{"kind":"present","param":"user_properties.$postInsert"},{"kind":"present","param":"user_properties.$remove"}]}. vendor.amplitude-identify.body.direct_property.forbidden docs
body.user_or_device_required required The request does not satisfy the documented user or device required requirement. Body scope: ["[]",""]. Decoded body source: identification. Encoding: json. vendor.amplitude-identify.body.user_or_device_required docs
method required Use a published Identify transport. Complete HTTP capture contract. Native JSON type: string. vendor.amplitude-identify.http.method.missing
vendor.amplitude-identify.http.method.empty
vendor.amplitude-identify.http.method.invalid
docs
content_type required POST Identify uses form fields rather than a native JSON request body. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"method","values":["POST"]}. Native JSON type: string. vendor.amplitude-identify.http.content_type.missing
vendor.amplitude-identify.http.content_type.empty
vendor.amplitude-identify.http.content_type.invalid
docs

Validate a payload

pixellint validate url "$ARTIFACT" --rulepack vendor/amplitude-identify

Try this failing payload in the playground. Amplitude identify missing api_key.

https://api2.amplitude.com/identify?identification=%5B%7B%22user_id%22%3A%22user-13793%22%7D%5D

cargo install pixellint · npm install pixellint