Skip to main content

Review localization validation rules for language support, locale requirements, and content adaptation

Locale

LocaleMustBeDistinct

Preconditions
reviewDetails.localizedReviews[].locale is present
DefinitionSeverityAPISampleMode
Validate that all locale values (review locale and all localized review locale values) are distinct
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LocaleMustBeDistinct",
"severity": "VIOLATION",
"message": "'Locale' value '{{value}}' is not distinct",
"context": {
"value": "en"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].locale",
"value": "en"
}
],
"compared": [],
"expected": []
}
}

Localized Reviews

LocalizedReviewsMustNotBeEmptyArray

DefinitionSeverityAPISampleMode
Validate that localizedReviews is not an empty array
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsMustNotBeEmptyArray",
"message": "'{{field}}' must be omitted or contain at least one element; empty arrays are not allowed.",
"severity": "VIOLATION",
"context": {
"field": "localizedReviews"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.reviewDetails.localizedReviews",
"value": "[]"
}
],
"createdDate": "2026-03-03T13:58:43.946Z"
}
}

LocalizedReviewsListMustNotIncludeNulls

DefinitionSeverityAPISampleMode
Validate that a list does not include null
VIOLATION
POST_AND_PUT
S

CountOfLocalizedReviewsExceedsThreshold

DefinitionSeverityAPISampleMode
Validate that the count of localizedReviews values in a list does not exceed one hundred seventy-eight (178)
VIOLATION
POST_AND_PUT
S

LocalizedReviewsNotExpectedForReviewType

Preconditions
type is USER
DefinitionSeverityAPISampleMode
Validate that localizedReviews is not present
VIOLATION
POST_AND_PUT
S

LocalizedReviewsLocaleMustBePresent

Preconditions
localizedReviews is present
DefinitionSeverityAPISampleMode
Validate that locale is present
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsLocaleNotSupported

Preconditions
Primary language tag is valid
Region subtag is valid
DefinitionSeverityAPISampleMode
Validate that a locale is supported
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsLocaleNotSupported",
"severity": "VIOLATION",
"message": "'{{field}}' value '{{value}}' is not supported",
"context": {
"field": "locale",
"value": "en-BE"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].locale",
"value": "en-BE"
}
],
"compared": [],
"expected": []
}
}

LocalizedReviewsLocaleMustNotBeEmpty

DefinitionSeverityAPISampleMode
Validate that locale is not an empty string
VIOLATION
POST_AND_PUT
S

LangTagMustBeValidISO639Code

DefinitionSeverityAPISampleMode
Validate that the primary language tag is a valid, supported ISO 639 code
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LangTagMustBeValidISO639Code",
"severity": "VIOLATION",
"message": "Primary language tag component of '{{value}}' in '{{field}}' is invalid or not supported",
"context": {
"field": "locale",
"value": "eng"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].locale",
"value": "eng"
}
],
"compared": [],
"expected": []
}
}

RegionMustBeValidISO3166Code

DefinitionSeverityAPISampleMode
Validate that a region subtag is a valid, supported ISO 3166-1 code
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__RegionMustBeValidISO3166Code",
"severity": "VIOLATION",
"message": "Region subtag component of '{{value}}' in '{{field}}' is invalid or not supported",
"context": {
"field": "locale",
"value": "en-001"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].locale",
"value": "eng-001"
}
],
"compared": [],
"expected": []
}
}

ScriptMustBeValidISO15924Code

DefinitionSeverityAPISampleMode
Validate that the script subtag is a valid, supported ISO 15924 code
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__ScriptMustBeValidISO15924Code",
"severity": "VIOLATION",
"message": "Script subtag component of '{{value}}' in '{{field}}' is invalid or not supported",
"context": {
"field": "locale",
"value": "ar-Arab-AE"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].locale",
"value": "ar-Arab-AE"
}
],
"compared": [],
"expected": []
}
}

Name

LocalizedReviewsNameMustNotBeDummyCharacters

DefinitionSeverityAPISampleMode
Validate that name is not dummy characters
VIOLATION
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsNameMustNotBeDummyCharacters",
"message": "'{{field}}' value must not be dummy characters",
"severity": "VIOLATION",
"context": {
"field": "name"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].name",
"value": "0"
}
],
"compared": [],
"expected": []
}
}

LocalizedReviewsNameMustNotBeEmpty

DefinitionSeverityAPISampleMode
Validate that name is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsNameMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'name' must not be empty string"
}

LocalizedReviewsNameIsEntirelyNumeric

DefinitionSeverityAPISampleMode
Validate that name is not entirely numeric
WARNING
POST_AND_PUT
S

LocalizedReviewsNameMustNotIncludeURL

DefinitionSeverityAPISampleMode
Validate that name does not include a URL
VIOLATION
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsNameMustNotIncludeURL",
"severity": "VIOLATION",
"message": "'{{field}}' is '{{value}}' and includes URL",
"context": {
"field": "name",
"value": "Check this out! https://www.example.com"
},
"details": {
"createdDate": "2026-04-10T11:36:02.00Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].name",
"value": "Check this out! https://www.example.com"
}
],
"compared": [],
"expected": []
}
}

LocalizedReviewsNameMustNotExceedMaximum

DefinitionSeverityAPISampleMode
Validate that name length does not exceed a maximum value (255)
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsNameMustNotIncludeVulgarWord

DefinitionSeverityAPISampleMode
Validate that name does not include a vulgar word
VIOLATION
POST_AND_PUT
A
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsNameMustNotIncludeVulgarWord",
"severity": "VIOLATION",
"message": "'{{field}}' includes localized or universally vulgar words: '{{vulgarWords}}'",
"context": {
"field": "name",
"vulgarWords": [ "value1", "value2" ]
}
}

Partners Resource URL

LocalizedReviewsResourceUrlMustHaveValidFormat

DefinitionSeverityAPISampleMode
Validate that a review's partnersResourceUrl has valid formatting
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsResourceUrlMustNotBeEmpty

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl is not an empty string
VIOLATION
POST_AND_PUT
S

LocalizedReviewsResourceUrlLengthMustNotExceedMaximum

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl length does not exceed a maximum value (255)
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsResourceUrlsMatch

Preconditions
More than one (1) reviewDetails.localizedReviews[].partnersResourceUrl are present
DefinitionSeverityAPISampleMode
Validate that each localized review's partnersResourceUrl is distinct
WARNING
POST_AND_PUT
S

Review Body

LocalizedReviewsBodyIsMatched

Preconditions
locale language tag component is distinct (region subtag, if present, is ignored)
DefinitionSeverityAPISampleMode
Validate that reviewBody does not match another listed reviewBody
VIOLATION
POST_AND_PUT
S

LocalizedReviewsBodyMustBePresent

Preconditions
localizedReviews is present
DefinitionSeverityAPISampleMode
Validate that reviewBody is present
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsBodyMustNotBeDummyCharacters

DefinitionSeverityAPISampleMode
Validate that reviewBody is not dummy characters
VIOLATION
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsBodyMustNotBeDummyCharacters",
"message": "'{{field}}' value must not be dummy characters",
"severity": "VIOLATION",
"context": {
"field": "reviewBody"
},
"details": {
"createdDate": "2026-04-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].reviewBody",
"value": "0"
}
],
"compared": [],
"expected": []
}
}

LocalizedReviewsBodyMustNotBeEmpty

DefinitionSeverityAPISampleMode
Validate that reviewBody is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsBodyMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'reviewBody' must not be empty string"
}

LocalizedReviewsBodyMustNotBeEntirelyNumeric

DefinitionSeverityAPISampleMode
Validate that the reviewBody is not entirely numeric
VIOLATION
POST_AND_PUT
S

LocalizedReviewsBodyMustNotIncludeURL

DefinitionSeverityAPISampleMode
Validate that reviewBody does not include a URL
VIOLATION
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsBodyMustNotIncludeURL",
"severity": "VIOLATION",
"message": "'{{field}}' is '{{value}}' and includes URL",
"context": {
"field": "reviewBody",
"value": "View the full review at https://www.example.com"
},
"details": {
"createdDate": "2026-04-10T11:36:02.00Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].reviewBody",
"value": "View the full review at https://www.example.com"
}
],
"compared": [],
"expected": []
}
}

LocalizedReviewsBodyMustNotExceedMaximum

DefinitionSeverityAPISampleMode
Validate that reviewBody length does not exceed a maximum value (20,000)
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsBodyMustNotIncludeVulgarWord

DefinitionSeverityAPISampleMode
Validate that reviewBody does not include a vulgar word
VIOLATION
POST_AND_PUT
A
Example Validation Report
{
"code": "VALIDATION__LocalizedReviewsBodyMustNotIncludeVulgarWord",
"severity": "VIOLATION",
"message": "'{{field}}' includes localized or universally vulgar words: '{{vulgarWords}}'",
"context": {
"field": "reviewBody",
"vulgarWords": [ "value1", "value2" ]
}
}

LocalizedReviewsBodyDuplicatesName

Preconditions
name is present
DefinitionSeverityAPISampleMode
Validate that the reviewBody is not a duplicate of name
VIOLATION
POST_AND_PUT
S

Security

LocalizedReviewsResourceUrlMustPassUrlScan

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl passes security checks
VIOLATION
POST_AND_PUT
i/o
{{reason}}
malformed
not parsable
only http or https schemes accepted
port not within expected range
hostname is neither FQDN, IP v4 nor IP v6
does not resolve to accepted IP address version (v4 or v6)
does not resolve to accepted IP address
file size exceeds maximum
failed to download
unrecognizable MIME type
unexpected content for MIME type
failed virus scan
note

Validation report may be delivered synchronously or asynchronously, depending upon the mode of execution of the specific check

Example Validation Report
{
"code": "VALIDATION__PartnersResourceUrlMustPassUrlScan",
"message": "'partnersResourceUrl' rejected for reason: '{{reason}}'",
"severity": "VIOLATION",
"context": {
"reason": "only http or https schemes accepted"
},
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.localizedReviews[0].partnersResourceUrl",
"value": "ftp://www.example.com/hotels/somewhere/hotel-review"
}
],
"compared": [],
"expected": []
}
}

Unsupported Characters

LocalizedReviewsNameHasUnsupportedCharacter

DefinitionSeverityAPISampleMode
Validate that name does not include an unsupported character
VIOLATION
POST_AND_PUT
Link
S

LocalizedReviewsBodyHasUnsupportedCharacter

DefinitionSeverityAPISampleMode
Validate that reviewBody does not include an unsupported character
VIOLATION
POST_AND_PUT
Link
S

Partners Resource URL

ReviewsResourceUrlMustHaveValidFormat

DefinitionSeverityAPISampleMode
Validate that a review's partnersResourceUrl has valid formatting
VIOLATION
POST_AND_PUT
Link
S

ReviewsResourceUrlMustNotBeEmpty

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl is not an empty string
VIOLATION
POST_AND_PUT
S

ReviewsResourceUrlMustNotBePresent

Preconditions
Review type is USER
DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl is not present
VIOLATION
POST_AND_PUT
Link
S

ReviewsResourceUrlLengthMustNotExceedMaximum

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl length does not exceed a maximum value (255)
VIOLATION
POST_AND_PUT
Link
S

Security

ReviewsResourceUrlMustPassUrlScan

DefinitionSeverityAPISampleMode
Validate that partnersResourceUrl passes security checks
VIOLATION
POST_AND_PUT
{{reason}}
malformed
not parsable
only http or https schemes accepted
port not within expected range
hostname is neither FQDN, IP v4 nor IP v6
does not resolve to accepted IP address version (v4 or v6)
does not resolve to accepted IP address
file size exceeds maximum
failed to download
unrecognizable MIME type
unexpected content for MIME type
failed virus scan
note

Validation report may be delivered synchronously or asynchronously, depending upon the mode of execution of the specific check

Example Validation Report
{
"code": "VALIDATION__PartnersResourceUrlMustPassUrlScan",
"message": "'partnersResourceUrl' rejected for reason: '{{reason}}'",
"severity": "VIOLATION",
"context": {
"reason": "only http or https schemes accepted"
},
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.reviewDetails.review.partnersResourceUrl",
"value": "ftp://www.example.com/hotels/somewhere/hotel-review"
}
],
"compared": [],
"expected": []
}
}