Validation errors
When uploading or overriding data, it is essential that the data conform to the platform's schema. The platform performs validation on your data to ensure it meets the required format, types, and constraints. Due to the complexity of data compliance with our schemas, it is common to encounter validation errors during upload.
These validation errors are useful for identifying which rows or columns of your data do not conform to expectations, enabling you to make the necessary corrections and resubmit your data.
Interpreting Validation Errors
If the status of the override request is error, the validationErrors field provides detailed information about what went wrong during the validation process.
The structure of this field is designed to help you quickly identify and fix issues in your data file. Each error message is crafted to be human-readable, giving clear insights into what failed and why, making debugging much more straightforward, even for those unfamiliar with the internal schema logic.
Please note that while these messages aim to be as understandable and informative as possible, they may evolve over time as the validation framework is improved or extended. It’s a good idea to treat the exact wording of error messages as subject to change.
Let's look at an example of an error response:
{
"id": "11111111-1111-1111-1111-11111111",
"collectionId": "11111111-1111-1111-1111-11111111",
"dataType": "subscription",
"separator": ",",
"dumpDatetime": "2025-08-07T11:53:40.062050Z",
"status": "error",
"message": "Validation failed",
"validationErrors": [
{
"DATA": {
"DATAFRAME_CHECK": [
{
"schema": "SubscriptionDataModel",
"column": "customer_id",
"check": "str_matches('re.compile('^\\\\d+$')')",
"error": "Column 'customer_id' failed element-wise validator number 0: str_matches('re.compile('^\\\\d+$')') failure cases: f2"
},
{
"schema": "SubscriptionDataModel",
"column": "activation_datetime",
"check": "datetime_after_epoch",
"error": "Column 'activation_datetime' failed element-wise validator number 1: <Check datetime_after_epoch> failure cases: 1969-09-01T13:45:00"
},
{
"schema": "SubscriptionDataModel",
"column": "is_cancelled",
"check": "str_matches('re.compile('^(?i:true|false|0|1)$')')",
"error": "Column 'is_cancelled' failed element-wise validator number 0: str_matches('re.compile('^(?i:true|false|0|1)$')') failure cases: No"
},
{
"schema": "SubscriptionDataModel",
"column": "billing_period_unit",
"check": "isin(['DAY', 'WEEK', 'MONTH', 'YEAR'])",
"error": "Column 'billing_period_unit' failed element-wise validator number 0: isin(['DAY', 'WEEK', 'MONTH', 'YEAR']) failure cases: HOUR"
},
{
"schema": "SubscriptionDataModel",
"column": "customer_birth_date",
"check": "str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}$')')",
"error": "Column 'customer_birth_date' failed element-wise validator number 0: str_matches('re.compile('^\\\\d{4}-\\\\d{2}-\\\\d{2}$')') failure cases: 1985-11-2f"
},
{
"schema": "SubscriptionDataModel",
"column": "SubscriptionDataModel",
"check": "check_cancellation_after_activation",
"error": "DataFrameSchema 'SubscriptionDataModel' failed element-wise validator number 0: <Check check_cancellation_after_activation> failure cases: 2, 2019-05-10T14:00:00, 2018-06-01T00:00:00"
},
{
"schema": "SubscriptionDataModel",
"column": "SubscriptionDataModel",
"check": "check_cancellation_consistency",
"error": "DataFrameSchema 'SubscriptionDataModel' failed element-wise validator number 1: <Check check_cancellation_consistency> failure cases: 4, , True"
}
]
}
}
]
}
Here's a breakdown of the validationErrors structure:
validationErrors: This is a list containing the validation error objects.DATA: This key indicates the validation errors are related to checks performed on the data (e.g., format, type, content).DATAFRAME_CHECK: A specific subcategory ofDATAerrors, typically involving element-wise or row-wise custom checks.SCHEMA: This key indicates that the error is related to schema-level validation failures, such as nullability or type checks.SERIES_CONTAINS_NULLS: This is a specific type of schema error. In this case, it means a column that shouldn't contain null values does.- Inside each list (e.g.,
DATAFRAME_CHECK,SERIES_CONTAINS_NULLS), you'll find one or more objects, each detailing a specific instance of the error:schema: The name of the data schema used for validation (e.g.,ContactsDataModel).column: The column in your CSV file that caused the error (e.g.,Email).check: The specific validation rule or function that failed.error: A detailed message explaining the problem, often including sample failure cases.
By examining this structure, you can pinpoint the exact column and issue in your data, correct it, and resubmit the override request.
In this specific case for example the Email column in the row with index 0 contains a null value, which violates the not_nullable constraint of the data model.
Summary of Validation Errors in the Example
The table below summarizes all the validation errors included in the example response above:
| Column | Check Type | Failing Check | Invalid Example | Expected Format/Values |
|---|---|---|---|---|
| customer_id | DATA | str_matches('re.compile('^\d+$')') | f2 | String of digits only |
| activation_datetime | DATA | datetime_after_epoch | 1969-09-01T13:45:00 | Datetime after 1970-01-01 |
| is_cancelled | DATA | str_matches('re.compile('^(?i:true | false | 0 |
| billing_period_unit | DATA | isin(['DAY', 'WEEK', 'MONTH', 'YEAR']) | HOUR | One of: 'DAY', 'WEEK', 'MONTH', 'YEAR' |
| customer_birth_date | DATA | str_matches('re.compile('^\d4-\d2-\d2$')') | 1985-11-2f | Date in 'YYYY-MM-DD' format |
| SubscriptionDataModel | DATA | check_cancellation_after_activation | 2019-05-10T14:00:00, 2018-06-01T00:00:00 | Cancellation date must be after activation date |
| SubscriptionDataModel | DATA | check_cancellation_consistency | , True | Cancellation must be consistent with cancellation flags |