Customer.io Track events check submitted payloads.
Customer.io Track v1 events endpoint and locally checkable payload contracts.
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 |
|---|---|---|---|---|
root |
optional | Native JSON type: object. | vendor.customerio-track.body.root.invalid |
docs |
name |
required | Native JSON type: string. Maximum decoded UTF-8 bytes: 100. | vendor.customerio-track.body.name.missingvendor.customerio-track.body.name.invalid |
docs |
data |
optional | Native JSON type: object. Maximum compact JSON bytes: 100000. | vendor.customerio-track.body.data.invalid |
docs |
id |
optional | Native JSON type: string. | vendor.customerio-track.body.id.emptyvendor.customerio-track.body.id.invalid |
docs |
timestamp |
optional | Native JSON type: integer. | vendor.customerio-track.body.timestamp.invalid |
docs |
type |
optional | Unknown non-page/screen values default to event; no closed enum is imposed. Native JSON type: string. | vendor.customerio-track.body.type.invalid |
docs |
anonymous_id |
optional | Native JSON type: string. | vendor.customerio-track.body.anonymous_id.invalid |
docs |
data.from_address |
optional | Native JSON type: string. | vendor.customerio-track.body.data.from_address.invalid |
docs |
data.recipient |
optional | Native JSON type: string. | vendor.customerio-track.body.data.recipient.invalid |
docs |
data.reply_to |
optional | Native JSON type: string. | vendor.customerio-track.body.data.reply_to.invalid |
docs |
method |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.method.missingvendor.customerio-track.http.method.emptyvendor.customerio-track.http.method.invalid |
docs |
content_type |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.content_type.missingvendor.customerio-track.http.content_type.emptyvendor.customerio-track.http.content_type.invalid |
docs |
body |
required | Complete HTTP capture contract. | vendor.customerio-track.http.body.missing |
docs |
authorization_scheme |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.authorization_scheme.missingvendor.customerio-track.http.authorization_scheme.emptyvendor.customerio-track.http.authorization_scheme.invalid |
docs |
basic_auth.username |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.basic_auth.username.missingvendor.customerio-track.http.basic_auth.username.invalid |
docs |
basic_auth.password |
required | Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.basic_auth.password.missingvendor.customerio-track.http.basic_auth.password.invalid |
docs |
headers.authorization |
required | HTTP Basic credentials use the standard Base64 alphabet and padding. Complete HTTP capture contract. Native JSON type: string. | vendor.customerio-track.http.headers.authorization.missingvendor.customerio-track.http.headers.authorization.emptyvendor.customerio-track.http.headers.authorization.invalid |
docs |
basic_auth.has_colon |
required | These APIs require a key and secret separated by a colon; colonless legacy keys are not this profile. Complete HTTP capture contract. Native JSON type: boolean. | vendor.customerio-track.http.basic_auth.has_colon.missingvendor.customerio-track.http.basic_auth.has_colon.emptyvendor.customerio-track.http.basic_auth.has_colon.invalid |
docs |
Validate a payload
pixellint validate request @request.json --rulepack vendor/customerio-track
Try this failing payload in the playground. An example with a validation finding.
{
"url": "https://track.customer.io/api/v1/customers/synthetic/events",
"method": "POST",
"headers": {
"Content-Type": "application/json"
},
"body": "{\"name\":\"purchase\",\"data\":{\"price\":23.45,\"product\":\"socks\"}}"
}
cargo install pixellint
·
npm install pixellint