Pixel
🟢 Supported
Collection Method
Parameter Payloads
Buz supports collecting payloads via url query params.
This method of data collection has drawbacks such as max uri lengths, but is very straight-forward to get started with.
If /pxl is configured as a pixel input, submitting a GET request to /pxl/?hello=world&userId=10 will send a payload of {"hello": "world", "userId": "10"} to the configured sinks.
No sdk's necessary.
Base64 Encoded Parameter Payloads
The Buz pixel input supports a "special" query param, hbp, by which b64 encoded payloads can be collected.
If Buz is configured with a pixel path of /pxl (the default), submitting a GET request to /pxl?hbp=eyJoZWxsbyI6IndvcmxkIn0 will send a payload of {"hello":"world"} to the configured sinks.
Namespace Method
Buz supports two ways of namespacing pixel payloads: arbitrary and named.
Arbitrary Pixels
Any requests sent to the configured root pixel path are considered arbitrary and are assigned a single namespace of buz.pixel.arbitrary.
/pxl is the default root pixel path.
If Buz is configured with a pixel path of /pxl (the default), all requests to /pxl will not be validated and will be namespaced according to buz.pixel.arbitrary.
Since this method is basically a catchall it should be used sparingly.
Named Pixels
Any requests sent to a schema-specific pixel path are namespaced according to the associated schema.
If Buz is configured with a pixel path of /pxl (the default), all requests to /pxl/io.silverton/someschema/v1.0.json will be validated and namespaced according to the contents of the io.silverton/someschema/v1.0.json schema.
Named pixels are the better way to go. Especially when payloads are base64 encoded so properties can have non-string types.
Validation Method
Arbitrary pixels: Not validated.
Named pixels with string query params: Validated according to the associated schema. But all schema properties must be of type string 👎.
Named pixels with the hbp b64-encoded query param: Validated according to the associated schema. Schema properties can be of any type 👍.
Sample Pixel Configuration
inputs:
pixel:
enabled: true # Whether or not to enable pixels
path: /pxl # Root path for incoming pixels