{
  "openapi": "3.0.0",
  "info": {
    "title": "LocationServices_DistanceFinder_Nearby",
    "description": "",
    "version": "1.1"
  },
  "servers": [
    {
      "url": "https://api.addressy.com"
    }
  ],
  "paths": {
    "/LocationServices/DistanceFinder/Nearby/v1.10/json6.ws": {
      "post": {
        "tags": [
          "LocationServices_DistanceFinder_Nearby"
        ],
        "summary": "LocationServices_DistanceFinder_Nearby",
        "description": "",
        "operationId": "LocationServices_DistanceFinder_Nearby",
        "requestBody": {
          "x-name": "body",
          "content": {
            "application/json": {
              "schema": {
                "title": "NearByRequest",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RequestItemKeyRequired"
                  },
                  {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "AddressId": {
                        "type": "string"
                      },
                      "LocationListId": {
                        "type": "string",
                        "description": "A GuID that identifies a list previously created using our [Create List](/api-reference/store-finder/create-list) API. When this field is populated with a valid ID, the API will utilise the list for your destination locations."
                      },
                      "Locations": {
                        "type": "array",
                        "description": "An array of strings that is populated with information about a location. Any points in the locations object will be used to calculate distances from your origin location. **If not using a previously uploaded Location List then at least one location must be sent in the request.**",
                        "items": {
                          "$ref": "#/components/schemas/PointData"
                        }
                      },
                      "OriginLocation": {
                        "description": "An array of strings that is populated with information about your origin location. This will be the starting point for all distances calculated via the API.",
                        "$ref": "#/components/schemas/PointData"
                      },
                      "MaxDistance": {
                        "type": "number",
                        "description": "The maximum straight line distance radius of results that will be returned, starting from the original location, in metres. For example, setting a maxDistance of 100000 will only return results within a 100km radius of the origin. By default this is set to 100km with a maximum value of 500km. A smaller search radius will improve performance.",
                        "format": "double"
                      },
                      "InputUnit": {
                        "description": "The unit type that you have supplied the MaxDistance field in.",
                        "$ref": "#/components/schemas/DistanceUnit"
                      },
                      "MaxResults": {
                        "type": "integer",
                        "description": "The maximum number of locations you want returned. By default this is set to 10 with a maximum value of 100. Reducing the number of results returned will also improve performance.",
                        "format": "int32"
                      },
                      "OrderBy": {
                        "description": "The order in which you want results to be returned. By default this will return locations in ascending distance order (i.e. closest location first). Time can be passed instead, to return in order of ascending travel time.",
                        "$ref": "#/components/schemas/OrderBy"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ExternalResponse",
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "OriginLocation": {
                      "description": "An array of strings containing the originLocation from the original request.",
                      "$ref": "#/components/schemas/ExternalResponsePointData"
                    },
                    "DestinationLocations": {
                      "type": "array",
                      "description": "An array of objects containing the destination locations and results for distance/time calculation.",
                      "items": {
                        "$ref": "#/components/schemas/ExternalResponseDestinationLocation"
                      }
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "InternalServerError",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ErrorResponseSelfContained",
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "Number": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Cause": {
                      "type": "string"
                    },
                    "Resolution": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown error": {
                    "summary": "Unknown error",
                    "value": {
                      "Number": -1,
                      "Description": "Unknown error",
                      "Cause": "The cause of the error is unknown but details have been passed to our support staff who will investigate.",
                      "Resolution": "These problems are typically short lived and are often resolved by trying again in a few minutes."
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ErrorResponseSelfContained",
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "Number": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Cause": {
                      "type": "string"
                    },
                    "Resolution": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Unknown key": {
                    "summary": "Unknown key",
                    "value": {
                      "Number": 2,
                      "Description": "Unknown key",
                      "Cause": "The key you are using to access the service was not found.",
                      "Resolution": "Please check that the key is correct. It should be in the form AA11-AA11-AA11-AA11."
                    }
                  },
                  "Agreement Not Signed": {
                    "summary": "Agreement Not Signed",
                    "value": {
                      "Number": 23,
                      "Description": "Agreement Not Signed",
                      "Cause": "There are agreements associated with service which are not signed.",
                      "Resolution": "Please go to your account and check your agreements."
                    }
                  },
                  "Not enough credit for request": {
                    "summary": "Not enough credit for request",
                    "value": {
                      "Number": 24,
                      "Description": "Not enough credit for request",
                      "Cause": "There is not enough credit on the account to process the request.",
                      "Resolution": "Please topup your account with credit."
                    }
                  },
                  "Unexpected error, please contact the help desk for more information": {
                    "summary": "Unexpected error, please contact the help desk for more information",
                    "value": {
                      "Number": 25,
                      "Description": "Unexpected error, please contact the help desk for more information",
                      "Cause": "",
                      "Resolution": ""
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ErrorResponseSelfContained",
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "Number": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Cause": {
                      "type": "string"
                    },
                    "Resolution": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Account out of credit": {
                    "summary": "Account out of credit",
                    "value": {
                      "Number": 3,
                      "Description": "Account out of credit",
                      "Cause": "Your account is either out of credit or has insufficient credit to service this request.",
                      "Resolution": "Please check your account balance and top it up if necessary."
                    }
                  },
                  "Web service not available on your plan": {
                    "summary": "Web service not available on your plan",
                    "value": {
                      "Number": 7,
                      "Description": "Web service not available on your plan",
                      "Cause": "The requested web service is not currently available on your payment plan.",
                      "Resolution": "Some services are only available in specific regions due to licensing restrictions. Please contact us for more information."
                    }
                  },
                  "Key daily limit exceeded": {
                    "summary": "Key daily limit exceeded",
                    "value": {
                      "Number": 8,
                      "Description": "Key daily limit exceeded",
                      "Cause": "The daily limit on the key has been exceeded.",
                      "Resolution": "Alter the daily limit on the key. Check the usage details first to see if usage is normal."
                    }
                  },
                  "Your account has been suspended": {
                    "summary": "Your account has been suspended",
                    "value": {
                      "Number": 9,
                      "Description": "Your account has been suspended",
                      "Cause": "Your account has been suspended. This can be for a number of reasons including non-payment of an invoice.",
                      "Resolution": "Please contact us in order to resolve this issue."
                    }
                  },
                  "Surge protector triggered": {
                    "summary": "Surge protector triggered",
                    "value": {
                      "Number": 10,
                      "Description": "Surge protector triggered",
                      "Cause": "An unusually large number of requests have been processed for your account so the surge protector has been enabled.",
                      "Resolution": "You can disable the surge protector at any time but this is only recommended if you are running through a batch of requests."
                    }
                  },
                  "No valid license available": {
                    "summary": "No valid license available",
                    "value": {
                      "Number": 11,
                      "Description": "No valid license available",
                      "Cause": "The request requires a valid license but none were found.",
                      "Resolution": "Please check your purchase history. You may be using a license that is no longer valid or of an incorrect type."
                    }
                  },
                  "Management key required": {
                    "summary": "Management key required",
                    "value": {
                      "Number": 12,
                      "Description": "Management key required",
                      "Cause": "To use this web service you require a management key. Management can be enabled on any key, but we advise you to use management keys with care.",
                      "Resolution": "Sign in to the website and create a new management key or change an existing key."
                    }
                  },
                  "Demo limit exceeded": {
                    "summary": "Demo limit exceeded",
                    "value": {
                      "Number": 13,
                      "Description": "Demo limit exceeded",
                      "Cause": "The daily demonstration limit for this service or account has been exceeded.",
                      "Resolution": "The limit will be reset at midnight tonight. If you would like the limit increased, please contact us."
                    }
                  },
                  "Free service limit exceeded": {
                    "summary": "Free service limit exceeded",
                    "value": {
                      "Number": 14,
                      "Description": "Free service limit exceeded",
                      "Cause": "You have used too many free web services.",
                      "Resolution": "Our web services are designed to operate in stages. The first is usually a Find service followed by a Retrieve. If you use too many Finds without the corresponding number of Retrieves you will receive this error. For more information, please contact us."
                    }
                  },
                  "Wrong type of key": {
                    "summary": "Wrong type of key",
                    "value": {
                      "Number": 15,
                      "Description": "Wrong type of key",
                      "Cause": "The type of key you're using isn't supported by this web service.",
                      "Resolution": "This usually happens if you're using a user or server license with a web service that only supports transactional keys. Please use another key and try again."
                    }
                  },
                  "Key expired": {
                    "summary": "Key expired",
                    "value": {
                      "Number": 16,
                      "Description": "Key expired",
                      "Cause": "The key you are trying to use has expired.",
                      "Resolution": "Please check that you are using the right key. A new one may have been issued if you recently renewed your key. Contact us if you have any questions."
                    }
                  },
                  "Individual User exceeded Lookup Limit": {
                    "summary": "Individual User exceeded Lookup Limit",
                    "value": {
                      "Number": 17,
                      "Description": "Individual User exceeded Lookup Limit",
                      "Cause": "An Individual User has exceeded their daily lookup limit on the key and that user will be prevented from using your service until tomorrow (GMT)",
                      "Resolution": "Check the usage details. If required, increase the Lookup Limit per Individual User or add the specific Individual User's IP to the Limiter Exclusions"
                    }
                  },
                  "Additional account verification required to use this web service on a Trial account.": {
                    "summary": "Additional account verification required to use this web service on a Trial account.",
                    "value": {
                      "Number": 26,
                      "Description": "Additional account verification required to use this web service on a Trial account.",
                      "Cause": "The requested web service cannot be used on a Trial account without additional account verification.",
                      "Resolution": "To use this web service, please add a payment card to your account or speak to your account manager."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "BadRequest",
            "content": {
              "application/json": {
                "schema": {
                  "title": "ErrorResponseSelfContained",
                  "type": "object",
                  "additionalProperties": false,
                  "properties": {
                    "Number": {
                      "type": "integer",
                      "format": "int32"
                    },
                    "Description": {
                      "type": "string"
                    },
                    "Cause": {
                      "type": "string"
                    },
                    "Resolution": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "Request not allowed from this IP": {
                    "summary": "Request not allowed from this IP",
                    "value": {
                      "Number": 4,
                      "Description": "Request not allowed from this IP",
                      "Cause": "The request was disallowed from the IP address.",
                      "Resolution": "Check the security settings on the key first. If they look fine, please contact support as it may be from an IP address on our blacklist."
                    }
                  },
                  "Request not allowed from this URL": {
                    "summary": "Request not allowed from this URL",
                    "value": {
                      "Number": 5,
                      "Description": "Request not allowed from this URL",
                      "Cause": "The request was disallowed from the URL.",
                      "Resolution": "Check the security settings on the key first. If they look fine, please contact support as it may be from a URL on our blacklist."
                    }
                  },
                  "Web service not available on this key": {
                    "summary": "Web service not available on this key",
                    "value": {
                      "Number": 6,
                      "Description": "Web service not available on this key",
                      "Cause": "The requested web service is disallowed on this key.",
                      "Resolution": "Check the security settings on the key first. You can limit a key to certain web services."
                    }
                  },
                  "Missing or invalid parameters": {
                    "summary": "Missing or invalid parameters",
                    "value": {
                      "Number": 18,
                      "Description": "Missing or invalid parameters",
                      "Cause": "A required parameter was not supplied of the value of a parameter cannnot be converted into the right type.",
                      "Resolution": "Check the parameters passed and their values against the specification for this service."
                    }
                  },
                  "Invalid JSON object": {
                    "summary": "Invalid JSON object",
                    "value": {
                      "Number": 19,
                      "Description": "Invalid JSON object",
                      "Cause": "The JSON object sent in your request is invalid.",
                      "Resolution": "Please ensure your JSON object is syntactically correct and try again."
                    }
                  },
                  "Endpoint not available": {
                    "summary": "Endpoint not available",
                    "value": {
                      "Number": 20,
                      "Description": "Endpoint not available",
                      "Cause": "The web service you are calling is not available on this endpoint",
                      "Resolution": "Refer to our documentation pages to ensure you are calling a valid endpoint for the web service you are requesting."
                    }
                  },
                  "Sandbox Mode is not available on this endpoint": {
                    "summary": "Sandbox Mode is not available on this endpoint",
                    "value": {
                      "Number": 21,
                      "Description": "Sandbox Mode is not available on this endpoint",
                      "Cause": "The License key used has Sandbox Mode enabled, but the testing functionality is not available on this endpoint.",
                      "Resolution": "Disable the Sandbox Mode on the License key."
                    }
                  },
                  "HTTPS requests only": {
                    "summary": "HTTPS requests only",
                    "value": {
                      "Number": 22,
                      "Description": "HTTPS requests only",
                      "Cause": "As of 3rd September 2018 all new accounts must use HTTPS.",
                      "Resolution": "Ensure you consume all of our APIs over HTTPS and not HTTP."
                    }
                  },
                  "Unexpected Error": {
                    "summary": "Unexpected Error",
                    "value": {
                      "Number": 1000,
                      "Description": "Unexpected Error",
                      "Cause": "The cause of the error is unknown but details have been passed to our support staff who will investigate.",
                      "Resolution": "These problems are typically short lived and are often resolved by trying again in a few minutes.."
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyQuery": {
        "type": "apiKey",
        "name": "Key",
        "in": "query"
      }
    },
    "schemas": {
      "PointData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string",
            "description": "Identifier for the location. This must be unique for each location provided within the request."
          },
          "Name": {
            "type": "string",
            "description": "Name of the location."
          },
          "Description": {
            "type": "string",
            "description": "Description of the location for display purposes."
          },
          "Address": {
            "type": "string",
            "description": "Address of the location for display purposes."
          },
          "Country": {
            "type": "string"
          },
          "Latitude": {
            "type": "string",
            "description": "The WGS 84 latitude in decimal degrees format."
          },
          "Longitude": {
            "type": "string",
            "description": "The WGS 84 longitude in decimal degrees format."
          },
          "MetaInfo": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "UnstructuredMetaInfo": {
            "type": "object",
            "additionalProperties": {}
          },
          "OpeningHours": {
            "$ref": "#/components/schemas/OpeningHours"
          }
        }
      },
      "OpeningHours": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Monday": {
            "$ref": "#/components/schemas/Day"
          },
          "Tuesday": {
            "$ref": "#/components/schemas/Day"
          },
          "Wednesday": {
            "$ref": "#/components/schemas/Day"
          },
          "Thursday": {
            "$ref": "#/components/schemas/Day"
          },
          "Friday": {
            "$ref": "#/components/schemas/Day"
          },
          "Saturday": {
            "$ref": "#/components/schemas/Day"
          },
          "Sunday": {
            "$ref": "#/components/schemas/Day"
          }
        }
      },
      "Day": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Open": {
            "type": "string"
          },
          "Close": {
            "type": "string"
          },
          "Information": {
            "type": "string"
          }
        }
      },
      "DistanceUnit": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Meters",
          "Miles",
          "Kilometers"
        ],
        "enum": [
          "Meters",
          "Miles",
          "Kilometers"
        ]
      },
      "OrderBy": {
        "type": "string",
        "description": "",
        "x-enumNames": [
          "Distance",
          "Time"
        ],
        "enum": [
          "Distance",
          "Time"
        ]
      },
      "RequestItemKeyRequired": {
        "allOf": [
          {
            "$ref": "#/components/schemas/RequestItem"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "Key"
            ],
            "properties": {
              "Key": {
                "type": "string",
                "description": "The key you want to use to authenticate with the service (you can request we create one for you or create one in your [account section](https://account.loqate.com/account#/)).",
                "default": "AA11-AA11-AA11-AA11"
              }
            }
          }
        ]
      },
      "RequestItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Key": {
            "type": "string"
          }
        }
      },
      "ExternalResponsePointData": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Id": {
            "type": "string",
            "description": "Identifier for the location."
          },
          "Name": {
            "type": "string",
            "description": "Name of the location."
          },
          "Description": {
            "type": "string",
            "description": "Description of the location for display purposes."
          },
          "Address": {
            "type": "string",
            "description": "Address of the location for display purposes."
          },
          "Country": {
            "type": "string"
          },
          "Latitude": {
            "type": "string",
            "description": "The WGS 84 latitude in decimal degrees format."
          },
          "Longitude": {
            "type": "string",
            "description": "The WGS 84 longitude in decimal degrees format."
          },
          "MetaInfo": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "UnstructuredMetaInfo": {
            "type": "object",
            "additionalProperties": {}
          },
          "OpeningHours": {
            "$ref": "#/components/schemas/ExternalResponseOpeningHours"
          }
        }
      },
      "ExternalResponseOpeningHours": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Monday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Tuesday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Wednesday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Thursday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Friday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Saturday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          },
          "Sunday": {
            "$ref": "#/components/schemas/ExternalResponseDay"
          }
        }
      },
      "ExternalResponseDay": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "Open": {
            "type": "string"
          },
          "Close": {
            "type": "string"
          },
          "Information": {
            "type": "string"
          }
        }
      },
      "ExternalResponseDestinationLocation": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "DestinationLocation": {
            "description": "This field contains the information provided as part of the locations array in the original request.",
            "$ref": "#/components/schemas/ExternalResponsePointData"
          },
          "Distance": {
            "type": "string",
            "description": "The distance by road in kilometres returned as a string."
          },
          "DistanceMiles": {
            "type": "string",
            "description": "The distance by road in miles returned as a string."
          },
          "DistanceMeters": {
            "type": "integer",
            "description": "The distance by road in metres returned as an integer.",
            "format": "int32",
            "nullable": true
          },
          "Time": {
            "type": "string",
            "description": "The travel time displayed as seconds, minutes or hours."
          },
          "TimeSeconds": {
            "type": "integer",
            "description": "The travel time displayed in seconds as an integer.",
            "format": "int32",
            "nullable": true
          }
        }
      }
    }
  },
  "security": [
    {
      "ApiKeyQuery": []
    }
  ]
}