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.
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.
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 |
|---|---|---|---|---|
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.missingvendor.mixpanel-groups.param.verbose.emptyvendor.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.emptyvendor.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.emptyvendor.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.missingvendor.mixpanel-groups.body.$token.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_key.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_id.emptyvendor.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.missingvendor.mixpanel-groups.body.$token.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_key.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_id.emptyvendor.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.missingvendor.mixpanel-groups.body.$token.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_key.emptyvendor.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.missingvendor.mixpanel-groups.body.$group_id.emptyvendor.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.missingvendor.mixpanel-groups.http.method.emptyvendor.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.emptyvendor.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.emptyvendor.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