swagger: '2.0' info: title: Microsoft Azure Azure Maps Geocoding Service version: 2022-02-01-preview description: Azure Maps Geocoding REST APIs host: atlas.microsoft.com schemes: - https consumes: [] produces: - application/json securityDefinitions: AADToken: type: oauth2 authorizationUrl: https://login.microsoftonline.com/common/oauth2/authorize flow: implicit description: >+ These are the [Azure Active Directory OAuth2](https://docs.microsoft.com/azure/active-directory/develop/v1-overview) Flows. When paired with [Azure role-based access](https://docs.microsoft.com/azure/role-based-access-control/overview) control it can be used to control access to Azure Maps REST APIs. Azure role-based access controls are used to designate access to one or more Azure Maps resource account or sub-resources. Any user, group, or service principal can be granted access via a built-in role or a custom role composed of one or more permissions to Azure Maps REST APIs. To implement scenarios, we recommend viewing [authentication concepts](https://aka.ms/amauth). In summary, this security definition provides a solution for modeling application(s) via objects capable of access control on specific APIs and scopes. > [!NOTE] > * This security definition **requires** the use of the `x-ms-client-id` header to indicate which Azure Maps resource the application is requesting access to. This can be acquired from the [Maps management API](https://aka.ms/amauthdetails). > * The `Authorization URL` is specific to the Azure public cloud instance. Sovereign clouds have unique Authorization URLs and Azure Active directory configurations. > * The Azure role-based access control is configured from the [Azure management plane](https://aka.ms/amrbac) via Azure portal, PowerShell, CLI, Azure SDKs, or REST APIs. > * Usage of the [Azure Maps Web SDK](https://aka.ms/amaadmc) allows for configuration based setup of an application for multiple use cases. > * Currently, Azure Active Directory [v1.0 or v2.0](https://docs.microsoft.com/azure/active-directory/develop/azure-ad-endpoint-comparison) supports Work, School, and Guests but does not support Personal accounts. scopes: https://atlas.microsoft.com/.default: https://atlas.microsoft.com/.default AzureKey: type: apiKey description: >- This is a shared key that is provisioned when creating an [Azure Maps resource](https://aka.ms/amauth) through the Azure management plane via Azure portal, PowerShell, CLI, Azure SDKs, or REST APIs. With this key, any application is authorized to access all REST APIs. In other words, these can currently be treated as master keys to the account which they are issued for. For publicly exposed applications, our recommendation is to use server-to-server access of Azure Maps REST APIs where this key can be securely stored. name: subscription-key in: header security: - AADToken: - https://atlas.microsoft.com/.default - AzureKey: [] responses: {} parameters: ApiVersion: name: api-version description: Version number of Azure Maps API. type: string in: query required: true default: 2022-02-01-preview x-ms-parameter-location: client Top: name: top in: query description: >- Maximum number of responses that will be returned. Default: 5, minimum: 1 and maximum: 20. required: false type: integer default: 5 minimum: 1 maximum: 20 x-ms-parameter-location: method Accept-Language: name: Accept-Language in: header description: >- Language in which search results should be returned. Please refer to [Supported Languages](https://learn.microsoft.com/azure/azure-maps/supported-languages) for details. required: false type: string x-ms-parameter-location: client Location: name: location in: query description: >- A point on the earth specified as a latitude and longitude. When you specify this parameter, the user’s location is taken into account and the results returned may be more relevant to the user. Example: &location=lon,lat required: false type: array items: type: number format: double minItems: 2 maxItems: 2 collectionFormat: csv x-ms-parameter-location: method Bbox: name: bbox in: query description: >- A rectangular area on the earth defined as a bounding box object. The sides of the rectangles are defined by latitude and longitude values. When you specify this parameter, the geographical area is taken into account when computing the results of a location query. Example: lon1,lat1,lon2,lat2 required: false type: array items: type: number format: double collectionFormat: csv minItems: 4 maxItems: 4 x-ms-parameter-location: method View: name: view in: query description: >- A string that an [ISO 3166-1 Alpha-2 region/country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). This will alter Geopolitical disputed borders and labels to align with the specified user region. required: false type: string x-ms-parameter-location: method paths: /geocode: get: description: >- **Geocoding**

**Applies to:** see pricing [tiers](https://aka.ms/AzureMapsPricingTier).

In many cases, the complete search service might be too much, for instance if you are only interested in traditional geocoding. Search can also be accessed for address look up exclusively. The geocoding is performed by hitting the geocoding endpoint with just the address or partial address in question. The geocoding search index will be queried for everything above the street level data. No POIs will be returned. Note that the geocoder is very tolerant of typos and incomplete addresses. It will also handle everything from exact street addresses or street or intersections as well as higher level geographies such as city centers, counties, states etc.
>[!Important]
>By using this feature, you agree to the preview legal terms. See the [Preview Supplemental Terms](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) for additional details. operationId: microsoftAzureSearchGetgeocoding produces: - application/geo+json x-ms-examples: Search detail address 15127 NE 24th Street, Redmond, WA: $ref: ./examples/ForwardGeocoding.json Search detail address 15127 NE 24th Street, Redmond, WA by addressLine: $ref: ./examples/ForwardGeocodingByAddressLine.json Search detail address 15127 NE 24th Street, Redmond, WA by query: $ref: ./examples/ForwardGeocodingByQuery.json Search landmark Empire State Building by query: $ref: ./examples/ForwardGeocodingFindLandmarkByQuery.json parameters: - $ref: '#/parameters/ApiVersion' - $ref: '#/parameters/Accept-Language' - $ref: '#/parameters/Top' - name: query in: query description: >- A string that contains information about a location, such as an address or landmark name. required: false type: string - name: addressLine in: query description: >- The official street line of an address relative to the area, as specified by the locality, or postalCode, properties. Typical use of this element would be to provide a street address or any official address. **If query is given, should not use this parameter.** required: false type: string - name: countryRegionSet in: query description: >- Comma separated string of country or region codes(ISO 3166-1 Alpha-2), e.g. FR,ES. This will limit the search to the specified countries. Only the first country code will be used for the Geocoder. **If query is given, should not use this parameter.** required: false type: array items: type: string collectionFormat: csv x-ms-parameter-location: method - $ref: '#/parameters/Bbox' - $ref: '#/parameters/View' - $ref: '#/parameters/Location' - name: adminDistrict in: query description: |- The country subdivision portion of an address, such as WA. **If query is given, should not use this parameter.** required: false type: string - name: adminDistrict2 in: query description: |- The county for the structured address, such as King. **If query is given, should not use this parameter.** required: false type: string - name: adminDistrict3 in: query description: |- The named area for the structured address. **If query is given, should not use this parameter.** required: false type: string - name: locality in: query description: |- The locality portion of an address, such as Seattle. **If query is given, should not use this parameter.** required: false type: string - name: postalCode in: query description: |- The postal code portion of an address. **If query is given, should not use this parameter.** required: false type: string - name: strictMatch in: query description: >- Restrict the geocoding result to the country or region that is specified in the countryRegionSet field and the state, province or territory specified in the adminDistrict field. **If query is given, should not use this parameter.** required: false type: string default: notstrict enum: - notstrict - strict x-ms-enum: name: StrictMatchEnum modelAsString: true values: - name: NotStrict value: notstrict description: >- Do not restrict results to the specified countryRegionSet and adminDistrict. - name: Strict value: strict description: >- Restrict results to the specified countryRegionSet and adminDistrict. x-ms-parameter-location: method - $ref: ../../../Common/preview/1.0/common.json#/parameters/ClientId responses: '200': description: OK schema: $ref: '#/definitions/GeocodingResponse' headers: x-ms-request-id: description: request id. type: string default: $ref: ../../../Common/preview/1.0/common.json#/responses/default summary: Microsoft Azure Get Geocode tags: - Geocode /geocode/batch: post: description: >- **Geocoding Batch API**


**Applies to**: see pricing [tiers](https://aka.ms/AzureMapsPricingTier).



The Geocoding Batch API sends batches of queries to [Geocoding API](https://docs.microsoft.com/rest/api/maps/search-v2/get-geocoding) using just a single API call. The API allows caller to batch up to **100** queries.
>[!Important]
>By using this feature, you agree to the preview legal terms. See the [Preview Supplemental Terms](https://azure.microsoft.com/support/legal/preview-supplemental-terms/) for additional details.

### Submit Synchronous Batch Request
The Synchronous API is recommended for lightweight batch requests. When the service receives a request, it will respond as soon as the batch items are calculated and there will be no possibility to retrieve the results later. The Synchronous API will return a timeout error (a 408 response) if the request takes longer than 60 seconds. The number of batch items is limited to **100** for this API.
```
POST https://atlas.microsoft.com/geocode/batch?api-version=2022-02-01-preview
```
### POST Body for Batch Request
To send the _geocoding_ queries you will use a `POST` request where the request body will contain the `batchItems` array in `json` format and the `Content-Type` header will be set to `application/json`. Here's a sample request body containing 2 _geocoding_ queries:


```
{
"batchItems": [
{
"addressLine": "One, Microsoft Way, Redmond, WA 98052",
"top": 2
},
{
"addressLine": "Pike Pl",
"adminDistrict": "WA",
"locality": "Seattle",
"top": 3
}
]
}
```

A _geocoding_ batchItem object can accept any of the supported _geocoding_ [URI parameters](https://docs.microsoft.com/rest/api/maps/search-v2/get-geocoding#uri-parameters) except query.


The batch should contain at least **1** query.


### Batch Response Model
The batch response contains a `summary` component that indicates the `totalRequests` that were part of the original batch request and `successfulRequests` i.e. queries which were executed successfully. The batch response also includes a `batchItems` array which contains a response for each and every query in the batch request. The `batchItems` will contain the results in the exact same order the original queries were sent in the batch request. Each item is of one of the following types:

- [`GeocodingResponse`](https://docs.microsoft.com/rest/api/maps/search-v2/get-geocoding#geocodingresponse) - If the query completed successfully.

- `Error` - If the query failed. The response will contain a `code` and a `message` in this case.


operationId: microsoftAzureSearchGetgeocodingbatch x-ms-examples: A Geocoding Batch API call containing 2 Geocoding queries: $ref: ./examples/ForwardGeocodingBatch.json parameters: - $ref: ../../../Common/preview/1.0/common.json#/parameters/ClientId - $ref: '#/parameters/ApiVersion' - $ref: '#/parameters/Accept-Language' - name: geocodingBatchRequestBody in: body description: >- The list of address geocoding queries/requests to process. The list can contain a max of 100 queries and must contain at least 1 query. required: true schema: $ref: '#/definitions/GeocodingBatchRequestBody' responses: '200': description: OK schema: $ref: '#/definitions/GeocodingBatchResponse' '206': description: >- Partial Content. Api would return 206 when part of the batchItem fail to get a response. schema: $ref: '#/definitions/GeocodingBatchResponse' default: $ref: ../../../Common/preview/1.0/common.json#/responses/default summary: Microsoft Azure Post Geocode Batch tags: - Geocode definitions: GeoJSONPoint: type: object description: A structure for Point Geometry properties: type: description: >- Specifies the `type` for the geometry. Value should always be equal to "Point". type: string enum: - Point x-ms-enum: name: GeoJSONPointTypeEnum modelAsString: true values: - value: Point coordinates: description: Coordinates for the `Point` geometry. type: array minItems: 2 maxItems: 2 items: type: number format: double Bbox: description: >- Information on the coordinate range for point Geometry. Please refer to [RFC 7946](https://datatracker.ietf.org/doc/html/rfc7946#section-5) for details. type: array minItems: 4 maxItems: 4 items: type: number format: double UsageType: type: string enum: - Display - Route GeocodePoints: description: >- A collection of geocode points that differ in how they were calculated and their suggested use. type: array items: type: object properties: geometry: $ref: '#/definitions/GeoJSONPoint' calculationMethod: description: >- The method that was used to compute the geocode point. - `Interpolation`: The geocode point was matched to a point on a road using interpolation. - `InterpolationOffset`: The geocode point was matched to a point on a road using interpolation with an additional offset to shift the point to the side of the street. - `Parcel`: The geocode point was matched to the center of a parcel. - `Rooftop`: The geocode point was matched to the rooftop of a building. type: string enum: - Interpolation - InterpolationOffset - Parcel - Rooftop usageTypes: description: >- The best use for the geocode point. Each geocode point is defined as a `Route` point, a `Display` point or both. Use `Route` points if you are creating a route to the location. Use `Display` points if you are showing the location on a map. For example, if the location is a park, a `Route` point may specify an entrance to the park where you can enter with a car, and a `Display` point may be a point that specifies the center of the park. type: array items: $ref: '#/definitions/UsageType' GeocodingBatchRequestItem: description: Batch Query object type: object properties: optionalId: description: id of the request which would show in corresponding batchItem type: string top: description: >- Maximum number of responses that will be returned. Default: 5, minimum: 1 and maximum: 20. type: integer default: 5 minimum: 1 maximum: 20 addressLine: description: >- The official street line of an address relative to the area, as specified by the locality, or postalCode, properties. Typical use of this element would be to provide a street address or any official address. type: string countryRegionSet: description: >- Comma separated string of country or region codes, e.g. FR,ES. This will limit the search to the specified countries. Only the first country code will be used for the Geocoder. type: array items: type: string bbox: description: >- A rectangular area on the earth defined as a bounding box object. The sides of the rectangles are defined by latitude and longitude values. For more information, see Location and Area Types. When you specify this parameter, the geographical area is taken into account when computing the results of a location query. Example: [lon1, lat1, lon2, lat2] type: array items: type: number format: double minItems: 4 maxItems: 4 view: description: >- A string that specifies an [ISO 3166-1 Alpha-2 region/country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). This will alter Geopolitical disputed borders and labels to align with the specified user region. type: string location: description: >- A point on the earth specified as a latitude and longitude. When you specify this parameter, the user’s location is taken into account and the results returned may be more relevant to the user. Example: &location=lon,lat type: array items: type: number format: double minItems: 2 maxItems: 2 adminDistrict: description: The country subdivision portion of an address, such as WA. type: string adminDistrict2: description: The county for the structured address, such as King. type: string adminDistrict3: description: The named area for the structured address. type: string locality: description: The locality portion of an address, such as Seattle. type: string postalCode: description: The postal code portion of an address. type: string strictMatch: description: >- Restrict the geocoding result to the country or region that is specified in the countryRegion field and the state, province or territory specified in the adminDistrict field. type: string default: notstrict enum: - notstrict - strict x-ms-enum: name: StrictMatchEnum modelAsString: true values: - value: notstrict description: >- Do not restrict results to the specified countryRegion and adminDistrict. - value: strict description: >- Restrict results to the specified countryRegion and adminDistrict. GeocodingBatchRequestBody: description: >- The list of address geocoding queries/requests to process. The list can contain a max of 100 queries and must contain at least 1 query. type: object properties: batchItems: description: The list of queries to process. type: array items: $ref: '#/definitions/GeocodingBatchRequestItem' GeocodingBatchResponseItem: type: object properties: optionalId: description: id of the batchItem which would be the same as the id in the request type: string type: $ref: '#/definitions/FeatureType' features: $ref: '#/definitions/Features' nextLink: $ref: '#/definitions/NextLink' error: $ref: >- ../../../../../common-types/data-plane/v1/types.json#/definitions/ErrorDetail GeocodingBatchResponse: description: This object is returned from a successful Geocoding Batch service call. type: object properties: summary: description: Summary for the batch request type: object readOnly: true properties: successfulRequests: description: Number of successful requests in the batch type: integer readOnly: true totalRequests: description: Total number of requests in the batch type: integer readOnly: true batchItems: description: Array containing the batch results. type: array items: $ref: '#/definitions/GeocodingBatchResponseItem' Features: type: array items: $ref: '#/definitions/FeaturesItem' FeaturesItem: type: object properties: type: type: string description: must be Feature enum: - Feature x-ms-enum: name: FeaturesItemTypeEnum modelAsString: true values: - value: Feature id: type: string description: ID for feature returned properties: type: object properties: type: type: string description: |- One of: * Address * RoadBlock * RoadIntersection readOnly: true confidence: $ref: '#/definitions/Confidence' matchCodes: $ref: '#/definitions/MatchCodes' address: $ref: '#/definitions/Address' geocodePoints: $ref: '#/definitions/GeocodePoints' geometry: $ref: '#/definitions/GeoJSONPoint' bbox: $ref: '#/definitions/Bbox' GeocodingResponse: description: This object is returned from a successful Geocoding call type: object properties: type: $ref: '#/definitions/FeatureType' features: $ref: '#/definitions/Features' nextLink: $ref: '#/definitions/NextLink' Address: description: The address of the result type: object properties: addressLine: description: AddressLine that includes Street Name and Number type: string readOnly: true locality: description: locality property type: string readOnly: true neighborhood: description: neighborhood property type: string readOnly: true adminDistricts: description: >- The subdivision name in the country or region for an address. This element is typically treated as the first order administrative subdivision, but in some cases it also contains the second, third, or fourth order subdivision in a country, dependency, or region. type: array items: type: object properties: name: type: string description: >- The name for the corresponding adminDistrict field, For adminDistrict[0], this could be full name of state such as Washington, For adminDistrict[1], this could be the full name of the county shortName: type: string description: >- The short name for the corresponding adminDistrict field, For adminDistrict[0], this could be short name of state such as WA, For adminDistrict[1], this could be the short name of the county postalCode: description: Postal Code property type: string readOnly: true countryRegion: type: object properties: ISO: description: ISO of country/region type: string readOnly: true name: description: name of country/region type: string readOnly: true formattedAddress: description: Formatted Address property type: string readOnly: true MatchCodes: description: >- One or more match code values that represent the geocoding level for each location in the response. For example, a geocoded location with match codes of `Good` and `Ambiguous` means that more than one geocode location was found for the location information and that the geocode service did not have search up-hierarchy to find a match. Similarly, a geocoded location with match codes of `Ambiguous` and `UpHierarchy` implies that a geocode location could not be found that matched all the provided location information, so the geocode service had to search up-hierarchy and found multiple matches at that level. An example of up an `Ambiguous` and `UpHierarchy` result is when you provide complete address information, but the geocode service cannot locate a match for the street address and instead returns information for more than one RoadBlock value. The possible values are: `Good`: The location has only one match or all returned matches are considered strong matches. For example, a query for New York returns several Good matches. `Ambiguous`: The location is one of a set of possible matches. For example, when you query for the street address 128 Main St., the response may return two locations for 128 North Main St. and 128 South Main St. because there is not enough information to determine which option to choose. `UpHierarchy`: The location represents a move up the geographic hierarchy. This occurs when a match for the location request was not found, so a less precise result is returned. For example, if a match for the requested address cannot be found, then a match code of `UpHierarchy` with a RoadBlock entity type may be returned. type: array items: type: string enum: - Good - Ambiguous - UpHierarchy Confidence: description: >- The level of confidence that the geocoded location result is a match. Use this value with the match code to determine for more complete information about the match. The confidence of a geocoded location is based on many factors including the relative importance of the geocoded location and the user’s location, if specified. The following description provides more information about how confidence scores are assigned and how results are ranked. If the confidence is set to `High`, one or more strong matches were found. Multiple `High` confidence matches are sorted in ranked order by importance when applicable. For example, landmarks have importance but addresses do not. If a request includes a location or a view, then the ranking may change appropriately. For example, a location query for "Paris" returns "Paris, France" and "Paris, TX" both with `High` confidence. "Paris, France" is always ranked first due to importance unless a user location indicates that the user is in or very close to Paris, TX or the map view indicates that the user is searching in that area. In some situations, the returned match may not be at the same level as the information provided in the request. For example, a request may specify address information and the geocode service may only be able to match a postal code. In this case, if the geocode service has a confidence that the postal code matches the data, the confidence is set to `Medium` and the match code is set to `UpHierarchy` to specify that it could not match all of the information and had to search up-hierarchy. If the location information in the query is ambiguous, and there is no additional information to rank the locations (such as user location or the relative importance of the location), the confidence is set to `Medium`. For example, a location query for "148th Ave, Bellevue" may return "148th Ave SE" and "148th Ave NE" both with `Medium` confidence. If the location information in the query does not provide enough information to geocode a specific location, a less precise location value may be returned and the confidence is set to `Medium`. For example, if an address is provided, but a match is not found for the house number, the geocode result with a Roadblock entity type may be returned. type: string enum: - High - Medium - Low NextLink: type: string description: >- The is the link to the next page of the features returned. If it's the last page, no this field. FeatureType: type: string enum: - FeatureCollection tags: - name: Geocode