pixellint

Heap account properties need app_id and an account id

app_id is the environment ID. Send account_id for one account, or accounts[] for a bulk update, with account_id on every row. Track stays vendor/heap-track. Add user properties stays vendor/heap-user-properties.

A bulk row still needs account_id

Heap documents account_id on a single update and accounts[].account_id on every bulk row.

Rule: vendor.heap-account-properties.body.accounts[].account_id.missing

What this pack matches

Hosts
heapanalytics.com, c.eu.heap-api.com
Paths
/api/add_account_properties
Vendor docs
developers.heap.io/reference/add-account-properties

Rules

Codes are stable. A finding in CI, MCP, or the playground lands on the same id.

Field Required What it checks Rule ids Source
app_id required It is the Heap environment ID. Heap documents it as required. Native JSON type: integer or string. Minimum numeric value: -2147483648. Maximum numeric value: 2147483647. Fix: Set `app_id` to the environment ID from Heap Projects. vendor.heap-account-properties.body.app_id.missing
vendor.heap-account-properties.body.app_id.empty
vendor.heap-account-properties.body.app_id.invalid
docs
account_id optional It is the account identifier on a single-account update. Heap documents `account_id` for single updates, and `accounts[]` for bulk. Native JSON type: string. Fix: Send `account_id` for one account, or an `accounts` array for bulk updates. vendor.heap-account-properties.body.account_id.empty
vendor.heap-account-properties.body.account_id.invalid
docs
accounts[].account_id required It is the account identifier on a bulk row. Heap documents each `accounts[]` object as having `account_id`. Native JSON type: string. Fix: Set `accounts[].account_id` on every bulk row. vendor.heap-account-properties.body.accounts[].account_id.missing
vendor.heap-account-properties.body.accounts[].account_id.empty
vendor.heap-account-properties.body.accounts[].account_id.invalid
docs
properties optional The vendor documents `properties` in the request contract. Native JSON type: object. vendor.heap-account-properties.body.properties.invalid docs
accounts optional The vendor documents `accounts` in the request contract. Native JSON type: array. Maximum array items: 1000. vendor.heap-account-properties.body.accounts.invalid docs
accounts[] optional The vendor documents `accounts[]` in the request contract. Native JSON type: object. vendor.heap-account-properties.body.accounts[].invalid docs
accounts[].properties required The vendor documents `accounts[].properties` in the request contract. Native JSON type: object. vendor.heap-account-properties.body.accounts[].properties.missing
vendor.heap-account-properties.body.accounts[].properties.invalid
docs
property_value… optional The vendor documents `property_value` in the request contract. Native JSON type: number or string. Maximum decoded characters: 1023. vendor.heap-account-properties.body.property_value.invalid docs
root optional The vendor documents `` in the request contract. Native JSON type: object. vendor.heap-account-properties.body.root.invalid docs
overlong_property_names… forbidden Property keys must have fewer than1024characters, counted afterJSONdecoding. Presence diagnostic severity: error. vendor.heap-account-properties.body.overlong_property_names.forbidden docs
body.single_account_properties required The request does not satisfy the documented single account properties requirement. vendor.heap-account-properties.body.single_account_properties docs
property_value… optional Body scope: accounts[]. Native JSON type: number or string. Maximum decoded characters: 1023. vendor.heap-account-properties.body.property_value.invalid docs
overlong_property_names… forbidden Property keys must have fewer than1024characters, counted afterJSONdecoding. Body scope: accounts[]. Presence diagnostic severity: error. vendor.heap-account-properties.body.overlong_property_names.forbidden docs
method required This published ingestion operation uses HTTP POST. Complete HTTP capture contract. Native JSON type: string. vendor.heap-account-properties.http.method.missing
vendor.heap-account-properties.http.method.empty
vendor.heap-account-properties.http.method.invalid
docs
content_type recommended Use a published request media type. Complete HTTP capture contract. Presence diagnostic severity: warning. Value diagnostic severity: warning. Native JSON type: string. vendor.heap-account-properties.http.content_type.missing
vendor.heap-account-properties.http.content_type.empty
vendor.heap-account-properties.http.content_type.invalid
docs
body required The request body is a JSON object. Complete HTTP capture contract. Native JSON type: object. vendor.heap-account-properties.http.body.missing
vendor.heap-account-properties.http.body.invalid
docs

Validate a payload

pixellint validate json @payload.json --rulepack vendor/heap-account-properties

Try this failing payload in the playground. Heap add account properties missing app_id.

{"account_id":"acct-10024"}

cargo install pixellint · npm install pixellint