Location URLs validation rules for format, security, content restrictions, and accessibility requirements
Brand
BrandHomePageUrlAuthorityNotMatchedInLocationHomePageUrl
| Preconditions |
|---|
Referenced brand's urls lists HOMEPAGE |
Location urls lists HOMEPAGE |
| Location Verification Required is CONDITIONAL and rule that authorities must match applies |
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that respective authorities match |
Example Validation Report
{
"code": "VALIDATION__BrandHomePageUrlAuthorityNotMatchedInLocationHomePageUrl",
"severity": "VIOLATION",
"message": "Authority in '{{value}}' does not match brand",
"context": {
"value": "https://www.authority.com"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.urls[type = 'HOMEPAGE'].url",
"value": "https://www.authority.com"
}
],
"compared": [
{
"field": "$.brandDetails.urls[type = 'HOMEPAGE'].url",
"value": "https://www.unmatched-authority.com"
}
],
"expected": []
}
}
Change Detection
CountOfUrlTypesIncreased
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that the count of types in latest submittal is less than or matches the count in the stored record |
SuspiciousRemovalOfUrls
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that urls is present when previously submitted |
UnexpectedHomePageUrlChange
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that the url selected as HOMEPAGE is unchanged between last version and latest submittal |
UnexpectedUrlsTypeChange
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that a url, unchanged between last version and latest submittal, has the same type |
Security
UrlsUrlIsMalformed
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url has expected variables |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlIsMalformed",
"message": "URL is malformed",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "http://www.exam ple.com"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlIsNotParseable
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url is parseable |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlIsNotParseable",
"message": "URL is not parseable",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "httpsexamplecom/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlIncludesUnsupportedFragment
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url does not include an unsupported fragment |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlIsNotParseable",
"message": "URL includes unsupported fragment",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page#unsupportedfragment"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlProtocolIsNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that the url protocol is https or http |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlProtocolIsNotSupported",
"message": "Protocol must be `https` or `http`",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "ftp://public.ftp-servers.example.com/mydirectory/myfile.txt"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlPortNumberIsNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that the port number is in the range 1 to 65535 |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlPortNumberIsNotSupported",
"message": "Port number must be in range 1 to 65535",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlDomainOrAddressIsNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that the hostname is an FQDN, or IPv4 or IPv6 address |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlDomainOrAddressIsNotSupported",
"message": "Hostname must be FQDN, or IPv4 or IPv6 address",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example_page.com"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlFQDNHostnameIsNotResolvable
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that an FQDN hostname is resolvable |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlFQDNHostnameIsNotResolvable",
"message": "FQDN hostname is not resolvable",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example_page.com"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlIPAddressIsNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that the resolved IP or the IP within the hostname is supported |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlIPAddressIsNotSupported",
"message": "IP Address is not supported",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example_page.com"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlContentExceedsMaxFileSize
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that content byte size does not exceed threshold |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlContentExceedsMaxFileSize",
"message": "Content exceeds maximum allowed size",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlContentNotDownloadedSuccessfully
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that content is downloaded successfully and that content byte size does not exceed threshold |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlContentNotDownloadedSuccessfully",
"message": "Content could not be downloaded. Or, downloaded content exceeds maximum allowed size",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlContentMimeTypeNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that MIME type is valid and supported |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlContentMimeTypeNotSupported",
"message": "Content MIME type is invalid or unsupported",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlContentMimeTypeDiscrepancy
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that content's detected MIME type matches the expected MIME type |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlContentMimeTypeDiscrepancy",
"message": "Detected MIME type does not match expected MIME type",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
UrlsUrlContentFailedVirusScan
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that content passes a virus scan check |
Example Validation Report
{
"code": "VALIDATION__UrlsUrlContentFailedVirusScan",
"message": "Content failed virus scan",
"severity": "VIOLATION",
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "https://example.com/page"
}
],
"compared": [],
"expected": []
}
}
URL
CountryCodeTopLevelDomainNotAllowedForOrgType
| Preconditions |
|---|
orgId resolves to organization that is location owner |
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that URL's ccTLD is not cn |
Example Validation Report
{
"code": "VALIDATION__CountryCodeTopLevelDomainNotAllowedForOrgType",
"severity": "WARNING",
"message": "Country support for your organization type is not available"
}
CountOfValuesInUrlsListExceedsThreshold
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that the count of urls values in a list does not exceed six (6) |
CountryCodeTopLevelDomainNotSupported
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that a URL's ccTLD corresponds with a supported country | Link |
Example Validation Report
{
"code": "VALIDATION__CountryCodeTopLevelDomainNotSupported",
"severity": "WARNING",
"message": "Support for 'url' value '{{value}}' not available",
"context": {
"value": "http://example.ru"
},
"details": {
"createdDate": "2026-09-01T21:00:59.865Z",
"submitted": [
{
"field": "$.locationDetails.urls[0].url",
"value": "http://example.ru"
}
],
"compared": [],
"expected": []
}
}
LocationUrlsMustNotBeEmptyArray
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that urls is not an empty array |
Example Validation Report
{
"code": "VALIDATION__LocationUrlsMustNotBeEmptyArray",
"message": "'{{field}}' must be omitted or contain at least one element; empty arrays are not allowed.",
"severity": "VIOLATION",
"context": {
"field": "urls"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.locationDetails.urls",
"value": "[]"
}
],
"createdDate": "2026-03-03T13:58:43.946Z"
}
}
UrlsListMustNotIncludeNulls
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that a list does not include null |
UrlsLengthMustNotExceedMaximum
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url length does not exceed a maximum value (255) | Link |
UrlsListMustNotContainNulls
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
| Validate that a list does not include null |
UrlsMustBeDistinct
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that each url value is distinct | Link |
UrlsNotPresent
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that urls (recommended features) are present | Link |
UrlShouldHaveExpectedAuthority
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that a url includes the expected authority | Link |
Example Validation Report
{
"code": "VALIDATION__UrlShouldHaveExpectedAuthority",
"severity": "VIOLATION",
"message": "Expected authority for type not present in '{{url}}'",
"context": {
"field": "url",
"value": "https://play.google.com/store/search?q=yelp&c=apps"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.urls[1].url",
"value": "https://play.google.com/store/search?q=yelp&c=apps"
}
],
"compared": [],
"expected": []
}
}
UrlsTypeMustBePresent
| Preconditions |
|---|
urls is present |
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that type is present | Link |
UrlsTypeMustBeValid
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that type value is valid | Link |
UrlsTypeMustNotBeEmpty
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that type is not an empty string |
UrlsUrlMustBePresent
| Preconditions |
|---|
urls is present |
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url is present | Link |
UrlsUrlMustNotBeEmpty
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url is not an empty string |
UrlsUrlMustNotIncludeUtmParameter
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url does include UTM parameter(s) | Link |
UrlsUrlMustHaveValidFormat
| Definition | Severity | API | Sample | Mode |
|---|---|---|---|---|
Validate that url has valid formatting | Link |