json_schema
Checks messages against a provided JSONSchema definition but does not change the payload under any circumstances. If a message does not match the schema it can be caught using error handling methods outlined here.
# Config fields, showing default values
label: ""
json_schema:
schema: "" # No default (optional)
schema_path: "" # No default (optional)
Please refer to the JSON Schema website for information and tutorials regarding the syntax of the schema.
Fields
schema
A schema to apply. Use either this or the schema_path
field.
Type: string
schema_path
The path of a schema document to apply. Use either this or the schema
field.
Type: string
Examples
With the following JSONSchema document:
{
"$id": "https://example.com/person.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Person",
"type": "object",
"properties": {
"firstName": {
"type": "string",
"description": "The person's first name."
},
"lastName": {
"type": "string",
"description": "The person's last name."
},
"age": {
"description": "Age in years which must be equal to or greater than zero.",
"type": "integer",
"minimum": 0
}
}
}
And the following Bento configuration:
pipeline:
processors:
- json_schema:
schema_path: "file://path_to_schema.json"
- catch:
- log:
level: ERROR
message: "Schema validation failed due to: ${!error()}"
- mapping: 'root = deleted()' # Drop messages that fail
If a payload being processed looked like:
{"firstName":"John","lastName":"Doe","age":-21}
Then a log message would appear explaining the fault and the payload would be dropped.