Webhooks
Send notifications as webhook payload to an HTTP endpoint.
Configuration Parameters
Field / Option | Required | Description | Example |
---|---|---|---|
Channel type | ✅ | Select Webhook as the channel type to send notifications to. | |
Name | ✅ | Identifier for the channel, used to configure notification rules. | Name it after the team accessing the channel. |
Webhook URL | ✅ | Webhook URL to the specified HTTP endpoint. | |
Auth header | Signature to include in the authorization header sent to the HTTP endpoint. | ||
Application link URL | ✅ | URL to your Validio application instance, used to send notifications. Note: This is predefined based on the web browser URL. |
Webhook Payload
Webhook payload is data embedded in a HTTP POST as JSON format. When your Notification rule is triggered, the webhook payload is sent to the specified HTTP endpoint. The payload structure varies depending on the notification type.
Note
Validio does not send notifications for backfilled incidents.
Validator Incidents
Validator incidents occur when your data breaches a configured Threshold. The payload structure varies depending on Segmentation and Threshold type.
{
"type": "ValidatorIncident",
"title": "1 incident triggered on: demo_source (DynamicThreshold threshold)",
"validatorUrl": "https://your-validio-instance.com/observe/sources/SRC_123/validators/VAL_13",
"source": {
"id": "SRC_123",
"name": "demo_source"
},
"validator": {
"id": "MTR_13",
"name": "numeric_validator"
},
"segmentation": {
"id": "SGM_123",
"name": "Unsegmented"
},
"incidents": [
{
"endTime": "2024-01-01 0:00:01 UTC",
"message": "placeholder",
"incident_id": "TAT_123",
"incident_group_id": "IGP_123",
"segment": {
"segmentFields": [
{
"field": "Age",
"value": "123"
}
],
"segmentId": "PRT_123"
},
"startTime": "2024-01-01 0:00:01 UTC",
"threshold": {
"backfillMode": false,
"decisionBoundsType": "UPPER_AND_LOWER",
"lowerBound": 0,
"sensitivity": 3,
"severity": "LOW",
"thresholdType": "DynamicThreshold",
"upperBound": 1,
"value": 0
},
"url": "http://your-validio-instance.com/issues/incidents/IGP_123"
}
]
}
Dynamic Threshold
The payload structure for dynamic thresholds include the value
, boundary
, and decisionBoundsType
: LOWER
, UPPER
, or UPPER_AND_LOWER
.
"threshold": {
"thresholdType": "DynamicThreshold",
"value": 90,
"decisionBoundsType": "UPPER_AND_LOWER",
"lowerBound": 80.47892,
"upperBound": 84.3383
}
"threshold": {
"thresholdType": "DynamicThreshold",
"value": 81,
"decisionBoundsType": "LOWER",
"lowerBound": 81.62181
}
Fixed Threshold
The payload structure for fixed thresholds include the comparison value
, value
, and comparison operator
: LESS
, LESS_EQUAL
, EQUAL
, NOT_EQUAL
, GREATER
, or GREATER_EQUAL
.
"threshold": {
"thresholdType": "FixedThreshold",
"operator": "LESS",
"comparisonValue": 8,
"value": 6
}
"threshold": {
"thresholdType": "FixedThreshold",
"operator": "LESS_EQUAL",
"comparisonValue": 30,
"value": 24
}
Difference Threshold
The payload structure for difference thresholds include the difference_type
which contains either ABSOLUTE
or PERCENTAGE
.
"threshold": {
"thresholdType": "DifferenceThreshold",
"lowerBound": 42.0,
"upperBound": 42.1,
"differenceType": "PERCENTAGE",
"value": 42.2,
"numberOfWindows": 42
}
Schema Changes
Validio can send notifications about changes in your schema. changeTypes
can include one of the following: Nullability
, MissingField
, JtdType
, or UnderlyingType
.
{
"type": "SchemaChangeSourceError",
"title": "1 schema change found on: demo_source (DemoSource).",
"sourceUrl": "https://your-validio-instance.com/observe/sources/SRC_123",
"sourceId": "SRC_123",
"source": {
"id": "SRC_123",
"name": "demo_source"
},
"incidents": [
{
"changes": {
"Age": {
"changeTypes": ["Nullability", "JtdType", "UnderlyingType", "Index"],
"new": {
"fieldIndex": 5,
"name": "Age",
"nullable": true,
"type": "float64",
"underlyingType": "int"
},
"old": {
"fieldIndex": 2,
"name": "Age",
"nullable": false,
"type": "float64",
"underlyingType": "int"
}
},
"Credit_score": {
"changeTypes": ["JtdType"],
"new": {
"name": "Credit_score",
"nullable": false,
"type": "string",
"underlyingType": "float64"
},
"old": {
"name": "Credit_score",
"nullable": false,
"type": "float64",
"underlyingType": "float64"
}
},
"age2": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "age",
"nullable": true,
"type": "float64",
"underlyingType": "FLOAT"
}
},
"age3": {
"changeTypes": ["JtdType"],
"new": {
"name": "age3",
"nullable": false,
"type": "float64",
"underlyingType": "string"
}
},
"buy_cycle": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "buy_cycle",
"nullable": true,
"type": "float64",
"underlyingType": "INTEGER"
}
},
"country": {
"changeTypes": ["AddedField"],
"new": {
"name": "country",
"nullable": false,
"type": "string",
"underlyingType": "string"
},
"old": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
}
},
"exam_28d": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "exam_28d",
"nullable": true,
"type": "float64",
"underlyingType": "INTEGER"
}
},
"exam_7d": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "exam_7d",
"nullable": true,
"type": "float64",
"underlyingType": "INTEGER"
}
},
"gender": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "gender",
"nullable": true,
"type": "float64",
"underlyingType": "INTEGER"
}
},
"new_nps": {
"changeTypes": ["MissingField"],
"new": {
"name": "",
"nullable": false,
"type": "",
"underlyingType": ""
},
"old": {
"name": "new_nps",
"nullable": true,
"type": "float64",
"underlyingType": "FLOAT"
}
}
}
}
]
}
Segment Limits
{
"type": "SegmentLimitExceededSourceError",
"title": "1 segment limit exceeded on: demo_source (DemoSource).",
"sourceUrl": "https://your-validio-instance.com/observe/sources/SRC_123",
"sourceId": "SRC_123",
"source": {
"id": "SRC_123",
"name": "demo_source"
},
"incidents": [
{
"limit": 1000,
"segmentation": {
"id": "SGM_123",
"name": "Unsegmented"
},
"segmentationUrl": "https://your-validio-instance.com/observe/sources/SRC_123/segmentations/SGM_123"
}
]
}
Source Errors
{
"type": "GenericSourceError",
"title": "1 source error found on: demo_source (DemoSource).",
"sourceUrl": "https://your-validio-instance.com/observe/sources/SRC_123",
"sourceId": "SRC_123",
"source": {
"id": "SRC_123",
"name": "demo_source"
},
"incidents": [
{
"message": "An unknown error has occurred in the source."
}
]
}
Updated about 1 month ago