Skip to main content

Location access points validation rules for coordinates, navigation, precision, and containment requirements

Access Points​

AccessPointsCoordinatesLatitudeHasLeadingSpace​

DefinitionSeverityAPISampleMode
Validate that latitude does not include any leading ("white") space
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinatesLatitudeHasLeadingSpace",
"message": "'{{latitude}}' must not include any leading spaces",
"severity": "VIOLATION",
"context": {
"latitude": " 43.84"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.locationDetails.accessPoints[0].coordinates.latitude",
"value": " 43.84"
}
],
"createdDate": "2026-12-05T19:39:14.602Z"
}
}

AccessPointsCoordinatesLongitudeHasLeadingSpace​

DefinitionSeverityAPISampleMode
Validate that longitude does not include any leading ("white") space
VIOLATION
POST_AND_PUT
S

AccessPointsCoordinatesMustBePresent​

Preconditions
accessPoints are present
DefinitionSeverityAPISampleMode
Validate that coordinates are present
VIOLATION
POST_AND_PUT
Link
S

AccessPointsListMustNotContainDuplicates​

DefinitionSeverityAPISampleMode
Validate that each entry in the accessPoints list is distinct
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsListMustNotContainDuplicates",
"severity": "VIOLATION",
"message": "access points list must not contain duplicates",
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [],
"compared": [],
"expected": []
}
}

AccessPointsListMustNotIncludeNulls​

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

AccessPointsMustNotBeEmptyArray​

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

AccessPointsCountryNotAllowedForOrgType​

Preconditions
orgId resolves to organization that is location owner
DefinitionSeverityAPISampleMode
Validate that accessPoints coordinates are not contained by China
VIOLATION
POST_AND_PUT
A
Example Validation Report
{
"code": "VALIDATION__AccessPointsCountryNotAllowedForOrgType",
"severity": "VIOLATION",
"message": "Country support for your organization type is not available",
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [],
"compared": [],
"expected": []
}
}

AccessPointsNotSupportedInCountry​

DefinitionSeverityAPISampleMode
Validate that access points coordinates are contained by a supported country
VIOLATION
POST_AND_PUT
Link#unsupported-countries)
A
Example Validation Report
{
"code": "VALIDATION__AccessPointsNotSupportedInCountry",
"severity": "VIOLATION",
"message": "Country support for 'accessPoints' not available",
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [],
"compared": [],
"expected": []
}
}

CountOfValuesInAccessPointsListExceedsThreshold​

DefinitionSeverityAPISampleMode
Validate that the count of accessPoints values in a list does not exceed twenty (20)
VIOLATION
POST_AND_PUT
S

Change Detection​

SuspiciousRemovalOfAccessPoints​

DefinitionSeverityAPISampleMode
Validate that accessPoints are present when previously submitted
WARNING
PUT
S

Containment​

AccessPointsCoordinatesMustBeContainedByDerivedAdminArea​

Preconditions
displayPoint is present
mainAddress is not present
DefinitionSeverityAPISampleMode
Validate that displayPoint coordinates, when reverse geocoded, returns an Administrative Area whose geometry contains accessPoints coordinates
VIOLATION
POST_AND_PUT
A

AccessPointsCoordinatesNotContainedByDerivedLocality​

Preconditions
displayPoint is present
mainAddress is not present
DefinitionSeverityAPISampleMode
Validate that displayPoint coordinates, when reverse geocoded, returns a Locality whose geometry contains accessPoints coordinates
WARNING
POST_AND_PUT
A

AccessPointsCoordinatesNotContainedByDerivedPostCode​

Preconditions
displayPoint is present
mainAddress is not present
DefinitionSeverityAPISampleMode
Validate that displayPoint coordinates, when reverse geocoded, returns a Post Code whose geometry contains accessPoints coordinates
WARNING
POST_AND_PUT
A

AccessPointsCoordinatesNotContainedByExpectedAdminArea​

Preconditions
structuredAddress is present
DefinitionSeverityAPISampleMode
Validate that coordinates, when reverse geocoded, returns an Administrative Area matching the value in administrativeArea
WARNING
POST_AND_PUT
A

AccessPointsCoordinatesNotContainedByExpectedLocality​

Preconditions
structuredAddress is present
DefinitionSeverityAPISampleMode
Validate that coordinates, when reverse geocoded, returns a Locality matching the value in locality
WARNING
POST_AND_PUT
A

AccessPointsCoordinatesNotContainedByExpectedPostCode​

Preconditions
structuredAddress is present
DefinitionSeverityAPISampleMode
Validate that coordinates, when reverse geocoded, returns a Post Code matching the value in postCode
WARNING
POST_AND_PUT
A

AccessPointsForDrivingContainedByWaterFeature​

DefinitionSeverityAPISampleMode
Validate that DRIVING Access Points coordinates are not contained by a mapped water feature
INFO
POST_AND_PUT
A

AccessPointsForWalkingContainedByWaterFeature​

DefinitionSeverityAPISampleMode
Validate that WALKING Access Points coordinates are not contained by a mapped water feature
INFO
POST_AND_PUT
A

AccessPointsForDrivingContainedByWaterFeature​

DefinitionSeverityAPISampleMode
Validate that DRIVING Access Points coordinates are not contained by a mapped water feature
INFO
POST_AND_PUT
A

AccessPointsMustBeWithinBufferedDistanceOfGeometry​

Preconditions
geometry is present and geometry type is Polygon or MultiPolygon
DefinitionSeverityAPISampleMode
Validate that Access Points coordinates are within a buffered distance of geometry (1 meter)
VIOLATION
POST_AND_PUT
S

Latitude & Longitude​

AccessPointsCoordinatesLatitudeMustBePresent​

DefinitionSeverityAPISampleMode
Validate that latitude is present
VIOLATION
POST_AND_PUT
Link
S

AccessPointsCoordinatesLongitudeMustBePresent​

DefinitionSeverityAPISampleMode
Validate that longitude is present
VIOLATION
POST_AND_PUT
Link
S

AccessPointsLatitudeAndLongitudeMatch​

Preconditions
latitude is not 0
longitude is not 0
DefinitionSeverityAPISampleMode
Validate that latitude AND longitude do not match
WARNING
POST_AND_PUT
S

AccessPointsLatitudeMustNotBeEmpty​

DefinitionSeverityAPISampleMode
Validate that latitude is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsLatitudeMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'{{field}}' must not be empty string",
"context": {
"field": "latitude"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.accessPoints[0].coordinates.latitude",
"value": " "
}
],
"compared": [],
"expected": []
}
}

AccessPointsLongitudeMustNotBeEmpty​

DefinitionSeverityAPISampleMode
Validate that longitude is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsLongitudeMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'{{field}}' must not be empty string",
"context": {
"field": "longitude"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.accessPoints[0].coordinates.longitude",
"value": " "
}
],
"compared": [],
"expected": []
}
}

AccessPointsLatLongMustNotBeZero​

DefinitionSeverityAPISampleMode
Validates that values of latitude and longitude are not both zero
VIOLATION
POST_AND_PUT
Link
S

PointMustBeContainedByCountry​

Preconditions
fullAddress or structuredAddress (either one) is present
DefinitionSeverityAPISampleMode
Validate that coordinates, when reverse geocoded, intersect the same country provided in a structuredAddress or fullAddress
VIOLATION
POST_AND_PUT
A

This is a single combined rule that checks both accessPoints.coordinates and displayPoint.coordinates against the country identified in the provided address (structuredAddress or fullAddress) — see Display Point for the displayPoint half of the same check. Neither field's presence is a precondition; an absent field is skipped rather than failed, as is an address that cannot be geocoded to a country.

Flow Chart​

Following chart describes the system's behavior as it relates to this validation:

1 When both fullAddress and structuredAddress are present, only the structuredAddress country is used for comparison.

AccessPointsNavigationMustNotBeEmpty​

DefinitionSeverityAPISampleMode
Validate that navigation is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsNavigationMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'{{field}}' must not be empty string",
"context": {
"field": "navigation"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.accessPoints[0].navigation",
"value": " "
}
],
"compared": [],
"expected": []
}
}

AccessPointsNavigationMustBePresent​

Preconditions
accessPoints are present
DefinitionSeverityAPISampleMode
Validate that navigation is present
VIOLATION
POST_AND_PUT
Link
S

AccessPointsNavigationMustBeValid​

DefinitionSeverityAPISampleMode
Validate that navigation value is valid
VIOLATION
POST_AND_PUT
Link
S

Precision​

AccessPointsCoordinateLatitudeHasExcessivePrecision​

DefinitionSeverityAPISampleMode
Validate that latitude value does not possess precision greater than 7 decimal places
WARNING
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinateLatitudeHasExcessivePrecision",
"severity": "WARNING",
"message": "Latitude has excessive precision and will be truncated and rounded",
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [],
"compared": [],
"expected": []
}
}

AccessPointsCoordinateLongitudeHasExcessivePrecision​

DefinitionSeverityAPISampleMode
Validate that longitude value does not possess precision greater than 7 decimal places
WARNING
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinateLongitudeHasExcessivePrecision",
"severity": "WARNING",
"message": "Longitude has excessive precision and will be truncated and rounded",
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [],
"compared": [],
"expected": []
}
}

AccessPointsCoordinateLatitudeMustBeSufficientlyPrecise​

DefinitionSeverityAPISampleMode
Validate that latitude value possesses minimum precision (5 decimal places)
VIOLATION
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinateLatitudeMustBeSufficientlyPrecise",
"message": "'{{latitude}}' must be sufficiently precise",
"severity": "VIOLATION",
"context": {
"latitude": "43.84"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.locationDetails.accessPoints.coordinates.latitude",
"value": "43.84"
}
],
"createdDate": "2026-06-05T19:39:14.602Z"
}
}

AccessPointsCoordinateLongitudeMustBeSufficientlyPrecise​

DefinitionSeverityAPISampleMode
Validate that longitude value possesses minimum precision (5 decimal places)
VIOLATION
POST_AND_PUT
Link
S

AccessPointsCoordinateLatitudeShouldBeMorePrecise​

DefinitionSeverityAPISampleMode
Validate that latitude value possesses precision that is greater than the minimum required degree of precision (greater than 5 decimal places, 6 is optimal)
WARNING
POST_AND_PUT
Link
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinateLatitudeShouldBeMorePrecise",
"message": "'{{latitude}}' precision should be more precise. 6 decimal places is optimal",
"severity": "WARNING",
"context": {
"latitude": "43.84234"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.locationDetails.accessPoints.coordinates.latitude",
"value": "43.84234"
}
],
"createdDate": "2026-06-05T19:39:14.602Z"
}
}

AccessPointsCoordinateLongitudeShouldBeMorePrecise​

DefinitionSeverityAPISampleMode
Validate that longitude value possesses precision that is greater than the minimum required degree of precision (greater than 5 decimal places, 6 is optimal)
WARNING
POST_AND_PUT
Link
S

AccessPointsCoordinateLatitudeMustBeWithinValidRange​

DefinitionSeverityAPISampleMode
Validate that latitude is within the expected range
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsCoordinateLatitudeMustBeWithinValidRange",
"message": "'{{latitude}}' value must be within a valid range",
"severity": "VIOLATION",
"context": {
"latitude": "91.358834"
},
"details": {
"compared": [],
"expected": [],
"submitted": [
{
"field": "$.locationDetails.accessPoints.coordinates.latitude",
"value": "91.358834"
}
],
"createdDate": "2026-06-05T19:39:14.602Z"
}
}

AccessPointsCoordinateLongitudeMustBeWithinValidRange​

DefinitionSeverityAPISampleMode
Validate that longitude is within the expected range
VIOLATION
POST_AND_PUT
S

Source​

AccessPointsSourceMustBeValid​

DefinitionSeverityAPISampleMode
Validate that source value is valid
VIOLATION
POST_AND_PUT
Link
S

AccessPointsSourceMustNotBeEmpty​

DefinitionSeverityAPISampleMode
Validate that source is not an empty string
VIOLATION
POST_AND_PUT
S
Example Validation Report
{
"code": "VALIDATION__AccessPointsSourceMustNotBeEmpty",
"severity": "VIOLATION",
"message": "'{{field}}' must not be empty string",
"context": {
"field": "source"
},
"details": {
"createdDate": "2026-02-10T11:36:02.00Z",
"submitted": [
{
"field": "$.locationDetails.accessPoints[0].source",
"value": " "
}
],
"compared": [],
"expected": []
}
}

AccessPointsSourceMustBePresent​

Preconditions
accessPoints are present
DefinitionSeverityAPISampleMode
Validate that source is present
VIOLATION
POST_AND_PUT
Link
S