pixellint

Mixpanel Groups checks group identity and update operations in captures.

The /groups operation updates company or account profiles. $group_key names the type, such as Company, and $group_id identifies the group. Each record needs $token and $set or another documented operator. verbose=1 is recommended for an observable response. Receiver acceptance and existing group state remain external.

The selected built-in Groups pack can inspect the SDK's recognized text/plain data= string body on POST to exact /groups or /groups/ endpoints. Supported raw JSON and Base64 reuse the existing group contracts after one strict outer decode. The original media type and capture byte accounting remain available; unrelated or custom plugins receive the ordinary representation.

Ambiguous form structure, competing query data, unavailable capture fields and the verified paired-CESU-8 Base64 producer boundary retain information findings. Local resource bounds leave dependent body rules unvalidated when exceeded. Existing Groups compression contracts remain unchanged. Local validation cannot establish browser delivery or live project authorization.

A token and group id are not an update

Mixpanel documents an operation object on every record. $set writes properties. The other operators increment, union, unset, or delete.

Rule: vendor.mixpanel-groups.body.operation_required

The SDK interpretation belongs to the selected endpoint owner.

An exact Groups route and supported observed text/plain representation establish the local source scope. Extra members, duplicate data fields and query/body ambiguity remain unvalidated. A custom plugin reusing this ID does not inherit the decoder, and explicit exclusions keep it inactive.

Rule: core.request.sdk_body_unvalidated

What this pack matches

Hosts
api.mixpanel.com, api-eu.mixpanel.com, api-in.mixpanel.com, api-js.mixpanel.com
Paths
/groups, /groups/
Vendor docs
docs.mixpanel.com/reference/group-set-property

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
verbose recommended Mixpanel documents `verbose=1` so the 200 body says whether the update was accepted. Fix: Send `verbose=1` on `/groups` while you are implementing. vendor.mixpanel-groups.param.verbose.missing
vendor.mixpanel-groups.param.verbose.empty
vendor.mixpanel-groups.param.verbose.invalid
docs
strict optional Mixpanel documents `strict=1` so failed records are named in the response. Fix: Send `strict=1` to see per-record validation errors. vendor.mixpanel-groups.param.strict.empty
vendor.mixpanel-groups.param.strict.invalid
docs
ip optional Mixpanel documents `ip=0` on server-side calls so the group profile is not geolocated to your server. Fix: Send `ip=0` from a server. vendor.mixpanel-groups.param.ip.empty
vendor.mixpanel-groups.param.ip.invalid
docs
data optional The official browser SDK encodes the event or profile update in data for the legacy base64 transport. vendor.mixpanel-groups.param.data.empty docs
https_required required Mixpanel explicitly rejects non-HTTPS API requests. vendor.mixpanel-groups.https_required docs
root optional The JSON body is a nonempty array of records. Native JSON type: array. Minimum array items: 1. vendor.mixpanel-groups.body.root.invalid docs
$token required Mixpanel documents `$token` as required. It is the project token. Body scope: []. Native JSON type: string. Fix: Send the project token from Mixpanel project settings as `$token`. vendor.mixpanel-groups.body.$token.missing
vendor.mixpanel-groups.body.$token.empty
vendor.mixpanel-groups.body.$token.invalid
docs
$group_key required Mixpanel documents `$group_key` as required. It is the group type, such as Company. Body scope: []. Native JSON type: string. Fix: Send the group key you configured in Mixpanel, such as `Company`. vendor.mixpanel-groups.body.$group_key.missing
vendor.mixpanel-groups.body.$group_key.empty
vendor.mixpanel-groups.body.$group_key.invalid
docs
$group_id required Mixpanel documents `$group_id` as required. It is the group instance, such as Acme. Body scope: []. Native JSON type: string or integer. Fix: Send the id of this group, such as `acme`. vendor.mixpanel-groups.body.$group_id.missing
vendor.mixpanel-groups.body.$group_id.empty
vendor.mixpanel-groups.body.$group_id.invalid
docs
$set optional Updates or adds group properties, creating the profile if needed. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.$set.invalid docs
$set_once optional Sets group properties only when they are not already set. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.$set_once.invalid docs
$add optional Increments numeric group properties. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.$add.invalid docs
$union optional Unions list group properties. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.$union.invalid docs
$remove optional Removes values from list group properties. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.$remove.invalid docs
$unset optional Unsets named group properties. Body scope: []. Native JSON type: array. vendor.mixpanel-groups.body.$unset.invalid docs
$delete optional Deletes the group profile. Body scope: []. Native JSON type: string. vendor.mixpanel-groups.body.$delete.invalid docs
root optional The vendor documents `` in the request contract. Body scope: []. Native JSON type: object. vendor.mixpanel-groups.body.root.invalid docs
$unset[] optional The vendor documents `$unset[]` in the request contract. Body scope: []. Native JSON type: string. vendor.mixpanel-groups.body.$unset[].invalid docs
increment… optional The vendor documents `increment` in the request contract. Body scope: []. Native JSON type: number. vendor.mixpanel-groups.body.increment.invalid docs
union… optional Every immediate operation member follows the documented array value contract, including empty and multiline custom names. No property-name grammar or receiver acceptance is inferred. Body scope: []. Native JSON type: array. vendor.mixpanel-groups.body.union.invalid docs
body.operation_required required The group update has no operation. Mixpanel documents `$set`, `$set_once`, `$add`, `$union`, `$remove`, `$unset`, or `$delete`. Body scope: []. Fix: Send `$set` with the properties to write, or another documented groups operator. vendor.mixpanel-groups.body.operation_required docs
root optional The JSON body is a nonempty array of records. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object or array. Minimum array items: 1. vendor.mixpanel-groups.body.root.invalid docs
$token required Mixpanel documents `$token` as required. It is the project token. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: string. Fix: Send the project token from Mixpanel project settings as `$token`. vendor.mixpanel-groups.body.$token.missing
vendor.mixpanel-groups.body.$token.empty
vendor.mixpanel-groups.body.$token.invalid
docs
$group_key required Mixpanel documents `$group_key` as required. It is the group type, such as Company. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: string. Fix: Send the group key you configured in Mixpanel, such as `Company`. vendor.mixpanel-groups.body.$group_key.missing
vendor.mixpanel-groups.body.$group_key.empty
vendor.mixpanel-groups.body.$group_key.invalid
docs
$group_id required Mixpanel documents `$group_id` as required. It is the group instance, such as Acme. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: string or integer. Fix: Send the id of this group, such as `acme`. vendor.mixpanel-groups.body.$group_id.missing
vendor.mixpanel-groups.body.$group_id.empty
vendor.mixpanel-groups.body.$group_id.invalid
docs
$set optional Updates or adds group properties, creating the profile if needed. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.$set.invalid docs
$set_once optional Sets group properties only when they are not already set. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.$set_once.invalid docs
$add optional Increments numeric group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.$add.invalid docs
$union optional Unions list group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.$union.invalid docs
$remove optional Removes values from list group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.$remove.invalid docs
$unset optional Unsets named group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: array. vendor.mixpanel-groups.body.$unset.invalid docs
$delete optional Deletes the group profile. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: string. vendor.mixpanel-groups.body.$delete.invalid docs
root optional The vendor documents `` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: object. vendor.mixpanel-groups.body.root.invalid docs
$unset[] optional The vendor documents `$unset[]` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: string. vendor.mixpanel-groups.body.$unset[].invalid docs
increment… optional The vendor documents `increment` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: number. vendor.mixpanel-groups.body.increment.invalid docs
union… optional Every immediate operation member follows the documented array value contract, including empty and multiline custom names. No property-name grammar or receiver acceptance is inferred. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Native JSON type: array. vendor.mixpanel-groups.body.union.invalid docs
body.operation_required required The group update has no operation. Mixpanel documents `$set`, `$set_once`, `$add`, `$union`, `$remove`, `$unset`, or `$delete`. Body scope: ["[]",""]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Fix: Send `$set` with the properties to write, or another documented groups operator. vendor.mixpanel-groups.body.operation_required docs
root optional Body scope: [].$set.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set.*. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set.**[]. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set_once.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set_once.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set_once.*. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$set_once.**[]. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$append.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$append.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$append.*. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$append.**[]. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$remove.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$remove.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$remove.*. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$remove.**[]. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$union.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$union.**. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$union.*. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: [].$union.**[]. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.**","$set.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.**","$set.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.*","$set.*"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.**[]","$set.**[]"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**","$set_once.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**","$set_once.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.*","$set_once.*"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**[]","$set_once.**[]"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**","$append.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**","$append.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.*","$append.*"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**[]","$append.**[]"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**","$remove.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**","$remove.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.*","$remove.*"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**[]","$remove.**[]"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**","$union.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**","$union.**"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.*","$union.*"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**[]","$union.**[]"]. Decoded body source: data. Encoding: base64_json. Applies when {"kind":"not","condition":{"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional The JSON body is a nonempty array of records. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object or array. Minimum array items: 1. vendor.mixpanel-groups.body.root.invalid docs
$token required Mixpanel documents `$token` as required. It is the project token. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: string. Fix: Send the project token from Mixpanel project settings as `$token`. vendor.mixpanel-groups.body.$token.missing
vendor.mixpanel-groups.body.$token.empty
vendor.mixpanel-groups.body.$token.invalid
docs
$group_key required Mixpanel documents `$group_key` as required. It is the group type, such as Company. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: string. Fix: Send the group key you configured in Mixpanel, such as `Company`. vendor.mixpanel-groups.body.$group_key.missing
vendor.mixpanel-groups.body.$group_key.empty
vendor.mixpanel-groups.body.$group_key.invalid
docs
$group_id required Mixpanel documents `$group_id` as required. It is the group instance, such as Acme. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: string or integer. Fix: Send the id of this group, such as `acme`. vendor.mixpanel-groups.body.$group_id.missing
vendor.mixpanel-groups.body.$group_id.empty
vendor.mixpanel-groups.body.$group_id.invalid
docs
$set optional Updates or adds group properties, creating the profile if needed. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.$set.invalid docs
$set_once optional Sets group properties only when they are not already set. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.$set_once.invalid docs
$add optional Increments numeric group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.$add.invalid docs
$union optional Unions list group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.$union.invalid docs
$remove optional Removes values from list group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.$remove.invalid docs
$unset optional Unsets named group properties. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: array. vendor.mixpanel-groups.body.$unset.invalid docs
$delete optional Deletes the group profile. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: string. vendor.mixpanel-groups.body.$delete.invalid docs
root optional The vendor documents `` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: object. vendor.mixpanel-groups.body.root.invalid docs
$unset[] optional The vendor documents `$unset[]` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: string. vendor.mixpanel-groups.body.$unset[].invalid docs
increment… optional The vendor documents `increment` in the request contract. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: number. vendor.mixpanel-groups.body.increment.invalid docs
union… optional Every immediate operation member follows the documented array value contract, including empty and multiline custom names. No property-name grammar or receiver acceptance is inferred. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Native JSON type: array. vendor.mixpanel-groups.body.union.invalid docs
body.operation_required required The group update has no operation. Mixpanel documents `$set`, `$set_once`, `$add`, `$union`, `$remove`, `$unset`, or `$delete`. Body scope: ["[]",""]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Fix: Send `$set` with the properties to write, or another documented groups operator. vendor.mixpanel-groups.body.operation_required docs
root optional Body scope: ["[].$set.**","$set.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.**","$set.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.*","$set.*"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set.**[]","$set.**[]"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**","$set_once.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**","$set_once.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.*","$set_once.*"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$set_once.**[]","$set_once.**[]"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**","$append.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**","$append.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.*","$append.*"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$append.**[]","$append.**[]"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**","$remove.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**","$remove.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.*","$remove.*"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$remove.**[]","$remove.**[]"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**","$union.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum object properties: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**","$union.**"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum decoded UTF-8 bytes: 255. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.*","$union.*"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 3. vendor.mixpanel-groups.body.root.invalid docs
root optional Body scope: ["[].$union.**[]","$union.**[]"]. Decoded body source: data. Encoding: json. Applies when {"kind":"value_pattern","param":"data","pattern":"^\\s*[\\[{]"}. Applies when {"kind":"json_type","param":"","json_type":"object"}. Presence diagnostic severity: error. Value diagnostic severity: warning. Native JSON type: string or number or boolean or object or array or null. Maximum container depth: 1. vendor.mixpanel-groups.body.root.invalid docs
method required The official SDK uses POST or GET fallback for this operation. Complete HTTP capture contract. Native JSON type: string. vendor.mixpanel-groups.http.method.missing
vendor.mixpanel-groups.http.method.empty
vendor.mixpanel-groups.http.method.invalid
docs
content_type optional Published native JSON, XHR form and sendBeacon text representations are retained. Complete HTTP capture contract. Applies when {"kind":"value_in","param":"method","values":["POST"]}. Presence diagnostic severity: warning. Value diagnostic severity: warning. Native JSON type: string. vendor.mixpanel-groups.http.content_type.empty
vendor.mixpanel-groups.http.content_type.invalid
docs
headers.content-encoding optional HTTP content encoding, when supplied. This endpoint documents its own gzip policy. Complete HTTP capture contract. Native JSON type: string. vendor.mixpanel-groups.http.headers.content-encoding.empty
vendor.mixpanel-groups.http.headers.content-encoding.invalid
docs
http.gzip_unsupported required This profile endpoint explicitly does not support gzip. Complete HTTP capture contract. vendor.mixpanel-groups.http.gzip_unsupported docs

Validate a payload

Use an explicit request capture to retain the SDK body, method and observed headers.

pixellint validate request @request.json --rulepack vendor/mixpanel-groups
pixellint validate json @payload.json --rulepack vendor/mixpanel-groups

Try this failing payload in the playground. An example with a validation finding.

[
  {
    "$token": "project-token",
    "$group_key": "Company",
    "$group_id": "acme"
  }
]

cargo install pixellint · npm install pixellint