openapi: 3.1.0
info:
  title: Stadia Maps Geospatial APIs
  description: The Stadia Maps Geospatial APIs provide you with the data you need to build awesome applications.
  contact:
    name: Stadia Maps Support
    url: https://www.stadiamaps.com
    email: support@stadiamaps.com
  version: 11.1.0
servers:
- url: https://api.stadiamaps.com
- url: https://api-eu.stadiamaps.com
paths:
  /route/v1:
    post:
      tags:
      - Routing
      summary: Get turn by turn routing instructions between two or more locations.
      description: The route (turn-by-turn) API computes routes between two or more locations. It supports a variety of tunable costing methods, and supports routing through intermediate waypoints and discontinuous multi-leg routes.
      operationId: route
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/routeRequest'
      responses:
        '200':
          description: The computed route(s).
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/routeResponse'
                - $ref: '#/components/schemas/osrmRouteResponse'
        '400':
          description: Bad request; more details will be included
        '500':
          description: An internal parse error occurred; more details will be included
      security:
      - ApiKeyAuth: []
  /nearest_roads/v1:
    post:
      tags:
      - Routing
      summary: Find the nearest roads to the set of input locations.
      description: The nearest roads API allows you query for detailed information about streets and intersections near the input locations.
      operationId: nearest-roads
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/nearestRoadsRequest'
      responses:
        '200':
          description: A list of streets and intersections that match the query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/nearestRoadsResponse'
        '400':
          description: Bad request; more details will be included
      security:
      - ApiKeyAuth: []
  /matrix/v1:
    post:
      tags:
      - Routing
      summary: Calculate a time distance matrix for use in an optimizer.
      description: |-
        The time distance matrix API lets you compare travel times between a set of possible start and end points.
        See https://docs.stadiamaps.com/limits/ for documentation of our latest limits.
      operationId: time-distance-matrix
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/matrixRequest'
      responses:
        '200':
          description: A matrix of times and distances between the start and end points.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/matrixResponse'
        '400':
          description: 'Bad request; more details will be included. NOTE: failure to find suitable edges near a location will result in a 400.'
      security:
      - ApiKeyAuth: []
  /isochrone/v1:
    post:
      tags:
      - Routing
      summary: Calculate areas of equal travel time from a location.
      description: The isochrone API computes reachable areas within a time or distance constraint. The resulting polygon can be rendered on a map and used for assessing urban mobility, planning, or as a search filter of places within a constrained range.
      operationId: isochrone
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/isochroneRequest'
      responses:
        '200':
          description: A GeoJSON object which can be integrated into your geospatial application.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/isochroneResponse'
        '400':
          description: Bad request; more details will be included
      security:
      - ApiKeyAuth: []
  /optimized_route/v1:
    post:
      tags:
      - Routing
      summary: Calculate an optimized route between a known start and end point.
      description: The optimized route API is a mix of the matrix and normal route API. For an optimized route, the start and end point are fixed, but the intermediate points will be re-ordered to form an optimal route visiting all nodes once.
      operationId: optimized-route
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/optimizedRouteRequest'
      responses:
        '200':
          description: The optimized route, which looks more or less like a normal route response. The only significant difference is that the `locations` may be re-ordered and annotated with an `original_index`.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/routeResponse'
                - $ref: '#/components/schemas/osrmRouteResponse'
        '400':
          description: Bad request; more details will be included
        '500':
          description: An internal parse error occurred; more details will be included
      security:
      - ApiKeyAuth: []
  /map_match/v1:
    post:
      tags:
      - Routing
      summary: Match a recorded route to the road network.
      description: The map matching API transforms a recorded route into navigation instructions like you would get from the `route` endpoint. The input can be in the form of either an encoded polyline, or (optionally) timestamped coordinates.
      operationId: map-match
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/mapMatchRequest'
      responses:
        '200':
          description: The matched route(s), which looks more or less like a normal route response, optionally with a `linear_references` key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/mapMatchRouteResponse'
        '400':
          description: Bad request; more details will be included
        '500':
          description: An internal parse error occurred; more details will be included
      security:
      - ApiKeyAuth: []
  /trace_attributes/v1:
    post:
      tags:
      - Routing
      summary: Trace the attributes of roads visited on a route.
      description: The trace attributes endpoint retrieves detailed information along a route, returning details for each section along the path, as well as any intersections encountered. In addition to tracing a recording route, this is great for providing just-in-time info to navigation applications, enabling them to conserve resources by omitting info like speed limits upfront that may be irrelevant if the user goes off-route.
      operationId: trace-attributes
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/traceAttributesRequest'
      responses:
        '200':
          description: The edges along the traced route with detailed info.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/traceAttributesResponse'
        '400':
          description: Bad request; more details will be included
      security:
      - ApiKeyAuth: []
  /geocoding/v1/autocomplete:
    get:
      tags:
      - Geocoding
      summary: Search and geocode quickly based on partial input.
      description: Autocomplete enables interactive search-as-you-type user experiences, suggesting places as you type, along with information that will help your users find the correct place quickly.
      operationId: autocomplete
      parameters:
      - name: text
        in: query
        description: The place name (address, venue name, etc.) to search for.
        required: true
        schema:
          type: string
          example: 1600 Pennsylvania Ave NW
      - name: focus.point.lat
        in: query
        description: The latitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: focus.point.lon
        in: query
        description: The longitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.min_lat
        in: query
        description: Defines the min latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.max_lat
        in: query
        description: Defines the max latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.min_lon
        in: query
        description: Defines the min longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.max_lon
        in: query
        description: Defines the max longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.lat
        in: query
        description: The latitude of the center of a circle to limit the search to. Requires `boundary.circle.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.circle.lon
        in: query
        description: The longitude of the center of a circle to limit the search to. Requires `boundary.circle.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.radius
        in: query
        description: The radius of the circle (in kilometers) to limit the search to. Defaults to 50km (search) or 1km (reverse) if unspecified.
        required: false
        schema:
          type: number
          format: double
      - name: boundary.country
        in: query
        description: A list of country codes in ISO 3116-1 alpha-2 or alpha-3 format.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: The GID of an area to limit the search to.
        required: false
        schema:
          type: string
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingLayer'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingSource'
        style: form
        explode: false
      - name: size
        in: query
        description: The maximum number of results to return.
        required: false
        schema:
          type: integer
      - name: lang
        in: query
        description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A GeoJSON collection of autocomplete search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geocodeResponse'
        '400':
          description: Bad request
      security:
      - ApiKeyAuth: []
  /geocoding/v1/search:
    get:
      tags:
      - Geocoding
      summary: Search for location and other info using a place name or address (forward geocoding).
      description: The search endpoint lets you search for addresses, points of interest, and administrative areas. This is most commonly used for forward geocoding applications where you need to find the geographic coordinates of an address.
      operationId: search
      parameters:
      - name: text
        in: query
        description: The place name (address, venue name, etc.) to search for.
        required: true
        schema:
          type: string
          example: 1600 Pennsylvania Ave NW
      - name: focus.point.lat
        in: query
        description: The latitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: focus.point.lon
        in: query
        description: The longitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.min_lat
        in: query
        description: Defines the min latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.max_lat
        in: query
        description: Defines the max latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.min_lon
        in: query
        description: Defines the min longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.max_lon
        in: query
        description: Defines the max longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.lat
        in: query
        description: The latitude of the center of a circle to limit the search to. Requires `boundary.circle.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.circle.lon
        in: query
        description: The longitude of the center of a circle to limit the search to. Requires `boundary.circle.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.radius
        in: query
        description: The radius of the circle (in kilometers) to limit the search to. Defaults to 50km (search) or 1km (reverse) if unspecified.
        required: false
        schema:
          type: number
          format: double
      - name: boundary.country
        in: query
        description: A list of country codes in ISO 3116-1 alpha-2 or alpha-3 format.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: The GID of an area to limit the search to.
        required: false
        schema:
          type: string
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingLayer'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingSource'
        style: form
        explode: false
      - name: size
        in: query
        description: The maximum number of results to return.
        required: false
        schema:
          type: integer
      - name: lang
        in: query
        description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A GeoJSON collection of search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geocodeResponse'
        '400':
          description: Bad request
      security:
      - ApiKeyAuth: []
  /geocoding/v1/search/structured:
    get:
      tags:
      - Geocoding
      summary: Find locations matching components (structured forward geocoding).
      description: The structured search endpoint lets you search for addresses, points of interest, and administrative areas. Rather than a single string which the API must infer meaning from, the structured search endpoint allows you to specify the known components upfront, which is useful in many forward geocoding workflows.
      operationId: search-structured
      parameters:
      - name: address
        in: query
        description: A street name and optional house number together, e.g. `11 Wall St`. If you have the data available separately, you should provide the house number and street separately.
        required: false
        schema:
          type: string
      - name: house_number
        in: query
        description: A house or building number. Mutually exclusive with the `address` field. Requires `street` to also be specified.
        required: false
        schema:
          type: string
          example: '11'
      - name: street
        in: query
        description: A street name. Mutually exclusive with the `address` field.
        required: false
        schema:
          type: string
          example: Wall St
      - name: unit
        in: query
        description: The apartment, suite, or unit number. Requires both `house_number` and `street` to be specified. Mutually exclusive with the `address` field.
        required: false
        schema:
          type: string
      - name: neighbourhood
        in: query
        description: A smaller area within a locality, e.g. `Financial District`. Practices vary by area, but these are typically not distinct administrative units.
        required: false
        schema:
          type: string
      - name: borough
        in: query
        description: A unit within a city, e.g. `Manhattan` (not widely used outside mega cities like NYC and Mexico City).
        required: false
        schema:
          type: string
      - name: locality
        in: query
        description: The city, village, town, etc. that the place/address is part of.
        required: false
        schema:
          type: string
          example: New York
      - name: county
        in: query
        description: Administrative divisions between localities and regions. Not commonly used as input to structured geocoding.
        required: false
        schema:
          type: string
      - name: region
        in: query
        description: Typically the first administrative division within a country. For example, a US state or a Canadian province.
        required: false
        schema:
          type: string
          example: New York
      - name: postalcode
        in: query
        description: A mail sorting code (e.g. a US ZIP code).
        required: false
        schema:
          type: string
          example: '10005'
      - name: country
        in: query
        description: A country code in ISO 3116-1 alpha-2 or alpha-3 format.
        required: false
        schema:
          type: string
          example: USA
      - name: focus.point.lat
        in: query
        description: The latitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: focus.point.lon
        in: query
        description: The longitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.min_lat
        in: query
        description: Defines the min latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.max_lat
        in: query
        description: Defines the max latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.rect.min_lon
        in: query
        description: Defines the min longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.rect.max_lon
        in: query
        description: Defines the max longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.lat
        in: query
        description: The latitude of the center of a circle to limit the search to. Requires `boundary.circle.lon`.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
      - name: boundary.circle.lon
        in: query
        description: The longitude of the center of a circle to limit the search to. Requires `boundary.circle.lat`.
        required: false
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
      - name: boundary.circle.radius
        in: query
        description: The radius of the circle (in kilometers) to limit the search to. Defaults to 50km (search) or 1km (reverse) if unspecified.
        required: false
        schema:
          type: number
          format: double
      - name: boundary.country
        in: query
        description: A list of country codes in ISO 3116-1 alpha-2 or alpha-3 format.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: The GID of an area to limit the search to.
        required: false
        schema:
          type: string
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingLayer'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingSource'
        style: form
        explode: false
      - name: size
        in: query
        description: The maximum number of results to return.
        required: false
        schema:
          type: integer
      - name: lang
        in: query
        description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A GeoJSON collection of search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geocodeResponse'
        '400':
          description: Bad request
      security:
      - ApiKeyAuth: []
  /geocoding/v1/search/bulk:
    post:
      tags:
      - Geocoding
      summary: Quickly run a batch of geocoding queries against the search, structured search, or reverse endpoints.
      description: The batch endpoint lets you specify many search, structured search, or reverse requests at once. Once received, all requests will be processed internally on our infrastructure, improving throughput when you need to do a lot of queries.
      operationId: search-bulk
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bulkSearchRequest'
      responses:
        '200':
          description: A JSON array of the individual query responses, each annotated with a status code. Individual requests may fail but this endpoint will still return all results. Responses will be in the same order as the input.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/bulkSearchResponse'
        '400':
          description: Bad request; more details will be included
      security:
      - ApiKeyAuth: []
  /geocoding/v1/reverse:
    get:
      tags:
      - Geocoding
      summary: Find places and addresses near geographic coordinates (reverse geocoding).
      description: Reverse geocoding and search finds places and addresses near any geographic coordinates.
      operationId: reverse
      parameters:
      - name: point.lat
        in: query
        description: The latitude of the point at which to perform the search.
        required: true
        schema:
          type: number
          format: double
          example: 48.848268
          maximum: 90
          minimum: -90
      - name: point.lon
        in: query
        description: The longitude of the point at which to perform the search.
        required: true
        schema:
          type: number
          format: double
          example: 2.294471
          maximum: 180
          minimum: -180
      - name: boundary.circle.radius
        in: query
        description: The radius of the circle (in kilometers) to limit the search to. Defaults to 50km (search) or 1km (reverse) if unspecified.
        required: false
        schema:
          type: number
          format: double
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingLayer'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/geocodingSource'
        style: form
        explode: false
      - name: boundary.country
        in: query
        description: A list of country codes in ISO 3116-1 alpha-2 or alpha-3 format.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: The GID of an area to limit the search to.
        required: false
        schema:
          type: string
      - name: size
        in: query
        description: The maximum number of results to return.
        required: false
        schema:
          type: integer
      - name: lang
        in: query
        description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A GeoJSON collection of search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geocodeResponse'
        '400':
          description: Bad request
      security:
      - ApiKeyAuth: []
  /geocoding/v1/place:
    get:
      tags:
      - Geocoding
      summary: Retrieve details of a place using its GID.
      description: Many search result components include an associated GID field (for example, an address may have a `localadmin_gid`). The place endpoint lets you look up these places directly by ID. Note that GIDs are not stable for all sources. See the [online documentation](https://docs.stadiamaps.com/geocoding-search-autocomplete/place-lookup/) for details.
      operationId: place-details
      parameters:
      - name: ids
        in: query
        description: A list of GIDs to search for.
        required: true
        schema:
          type: array
          items:
            type: string
          minItems: 1
        style: form
        explode: false
      - name: lang
        in: query
        description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A GeoJSON collection of search results.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/geocodeResponse'
        '400':
          description: Bad request
      security:
      - ApiKeyAuth: []
  /tz/lookup/v1:
    get:
      tags:
      - Geospatial
      summary: Get time zone information for any point on earth.
      description: Retrieve the time zone identifier, standard UTC offset, special offset (such as DST), and the localized time in several common formats.
      operationId: tz-lookup
      parameters:
      - name: lat
        in: query
        description: The latitude of the point you are interested in.
        required: true
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
        style: form
        example: 58.5953
      - name: lng
        in: query
        description: The longitude of the point you are interested in.
        required: true
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
        style: form
        example: 25.0136
      - name: timestamp
        in: query
        description: |-
          The UNIX timestamp at which the UTC and DST offsets will be calculated.
          This defaults to the present time. This endpoint is not necessarily guaranteed to be accurate
          for timestamps that occurred in the past. Time zone geographic boundaries change
          over time, so if the point you are querying for was previously in a different
          time zone, historical results will not be accurate. If, however, the point has
          been in the same geographic time zone for a very long time (ex: `America/New_York`),
          the historical data may be accurate for 100+ years in the past (depending on how far
          back the IANA TZDB rules have been specified).
        required: false
        schema:
          type: integer
          format: int64
          maximum: 8200290900000
          minimum: 0
        style: form
      responses:
        '200':
          description: The time zone information and local time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tzResponse'
              example:
                base_utc_offset: 3600
                dst_offset: 3600
                local_rfc_2822_timestamp: Mon, 9 Jun 2025 16:29:38 +0200
                local_rfc_3389_timestamp: 2025-06-09T16:29:38+02:00
                timestamp: 1749479378
                tz_id: Europe/Zurich
        '400':
          description: Bad request
        '404':
          description: Time zone not found
      security:
      - ApiKeyAuth: []
  /tz/lookup/v2:
    get:
      tags:
      - Geospatial
      summary: Get time zone information for any point on earth.
      description: Retrieve the time zone identifier, total UTC offset, whether DST is in effect, and the localized time in several common formats.
      operationId: tz-lookup-v2
      parameters:
      - name: lat
        in: query
        description: The latitude of the point you are interested in.
        required: true
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
        style: form
        example: 58.5953
      - name: lng
        in: query
        description: The longitude of the point you are interested in.
        required: true
        schema:
          type: number
          format: double
          maximum: 180
          minimum: -180
        style: form
        example: 25.0136
      - name: timestamp
        in: query
        description: |-
          The UNIX timestamp at which the UTC and DST offsets will be calculated.
          This defaults to the present time. This endpoint is not necessarily guaranteed to be accurate
          for timestamps that occurred in the past. Time zone geographic boundaries change
          over time, so if the point you are querying for was previously in a different
          time zone, historical results will not be accurate. If, however, the point has
          been in the same geographic time zone for a very long time (ex: `America/New_York`),
          the historical data may be accurate for 100+ years in the past (depending on how far
          back the IANA TZDB rules have been specified).
        required: false
        schema:
          type: integer
          format: int64
          maximum: 8200290900000
          minimum: 0
        style: form
      responses:
        '200':
          description: The time zone information and local time.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/tzResponseV2'
              example:
                is_dst: true
                local_rfc_2822_timestamp: Mon, 9 Jun 2025 16:29:38 +0200
                local_rfc_3339_timestamp: 2025-06-09T16:29:38+02:00
                timestamp: 1749479378
                tz_id: Europe/Zurich
                utc_offset: 7200
        '400':
          description: Bad request
        '404':
          description: Time zone not found
      security:
      - ApiKeyAuth: []
  /elevation/v1:
    post:
      tags:
      - Geospatial
      summary: Get the elevation profile along a polyline or at a point.
      description: The Stadia elevation API allows you to get the elevation of any point on earth. You can pass either a simple set of points or a Google encoded polyline string. This pairs well with our routing APIs, so you can generate an elevation profile for your next bike or run.
      operationId: elevation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/heightRequest'
        required: true
      responses:
        '200':
          description: A list of elevations along the polyline, in meters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HeightResponse'
              example:
                height:
                - 37
                id: kesklinn
                shape:
                - lat: 59.436884
                  lon: 24.742595
        '400':
          description: Bad request; more details will be included
      security:
      - ApiKeyAuth: []
  /geocoding/v2/autocomplete:
    get:
      tags:
      - Geocoding
      summary: Search and geocode quickly based on partial input.
      description: Autocomplete enables interactive search-as-you-type user experiences, suggesting places as you type, along with information that will help your users find the correct place quickly.
      operationId: autocomplete-v2
      parameters:
      - name: text
        in: query
        description: The text to search for (the start of an address, place name, etc.).
        required: true
        schema:
          type: string
        style: form
        example: 1600 Pennsylvania Ave NW
      - name: focus.point.lat
        in: query
        description: |-
          The latitude of a focus point.

          If provided (along with longitude), the search results should be more locally relevant.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: focus.point.lon
        in: query
        description: |-
          The longitude of a focus point.

          If provided (along with longitude), the search results should be more locally relevant.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/LayerId'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/SourceId'
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: |-
          The GID of a region to limit the search to.

          Note: these are not stable for all datasets! For example, OSM features may be deleted and re-added with a new ID.
        required: false
        schema:
          $ref: '#/components/schemas/DocumentGid'
        style: form
      - name: boundary.country
        in: query
        description: |-
          A list of comma-separated country codes in ISO 3116-1 alpha-2 or alpha-3 format.
          The search will be limited to these countries.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.rect.min_lat
        in: query
        description: |-
          The minimum latitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
        style: form
      - name: boundary.rect.min_lon
        in: query
        description: |-
          The minimum longitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.rect.max_lat
        in: query
        description: |-
          The maximum latitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: boundary.rect.max_lon
        in: query
        description: |-
          The maximum longitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.circle.lat
        in: query
        description: |-
          The latitude of the center of a circle to limit the search to.

          NOTE: Requires boundary.circle.lon.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: boundary.circle.lon
        in: query
        description: |-
          The longitude of the center of a circle to limit the search to.

          NOTE: Requires boundary.circle.lat.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.circle.radius
        in: query
        description: |-
          The radius of the circle (in kilometers) to limit the search to.

          NOTE: Requires the other boundary.circle parameters to take effect.
          Defaults to 50km if unspecified.
        required: false
        schema:
          $ref: '#/components/schemas/SearchRadius'
        style: form
      - name: size
        in: query
        description: The maximum number of items to return from a query.
        required: false
        schema:
          $ref: '#/components/schemas/QuerySizeLimit'
        style: form
      - name: lang
        in: query
        description: |-
          A BCP47 language tag which specifies a preference for localization of results.
          There is no default value, so place names will be returned as-is,
          which is usually in the local language.
          NOTE: The Accept-Language header is also respected, and many user agents will set it automatically.
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: A GeoJSON FeatureCollection with the results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
        '400':
          description: A response with a description of why the request is malformed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: missing required parameter foo
                type: FeatureCollection
        '500':
          description: A response with a description of what went wrong internally
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: internal server error
                type: FeatureCollection
      security:
      - ApiKeyAuth: []
  /geocoding/v2/search:
    get:
      tags:
      - Geocoding
      summary: Search for location and other info using a place name or address (forward geocoding).
      operationId: search-v2
      parameters:
      - name: text
        in: query
        description: The text to search for (the start of an address, place name, etc.).
        required: true
        schema:
          type: string
        style: form
        example: 1600 Pennsylvania Ave NW
      - name: focus.point.lat
        in: query
        description: |-
          The latitude of a focus point.

          If provided (along with longitude), the search results should be more locally relevant.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: focus.point.lon
        in: query
        description: |-
          The longitude of a focus point.

          If provided (along with longitude), the search results should be more locally relevant.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/LayerId'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/SourceId'
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: |-
          The GID of a region to limit the search to.

          Note: these are not stable for all datasets! For example, OSM features may be deleted and re-added with a new ID.
        required: false
        schema:
          $ref: '#/components/schemas/DocumentGid'
        style: form
      - name: boundary.country
        in: query
        description: |-
          A list of comma-separated country codes in ISO 3116-1 alpha-2 or alpha-3 format.
          The search will be limited to these countries.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.rect.min_lat
        in: query
        description: |-
          The minimum latitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          type: number
          format: double
          maximum: 90
          minimum: -90
        style: form
      - name: boundary.rect.min_lon
        in: query
        description: |-
          The minimum longitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.rect.max_lat
        in: query
        description: |-
          The maximum latitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: boundary.rect.max_lon
        in: query
        description: |-
          The maximum longitude component of a search bounding box.

          NOTE: Requires all other boundary.rect parameters to be specified.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.circle.lat
        in: query
        description: |-
          The latitude of the center of a circle to limit the search to.

          NOTE: Requires boundary.circle.lon.
        required: false
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
      - name: boundary.circle.lon
        in: query
        description: |-
          The longitude of the center of a circle to limit the search to.

          NOTE: Requires boundary.circle.lat.
        required: false
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
      - name: boundary.circle.radius
        in: query
        description: |-
          The radius of the circle (in kilometers) to limit the search to.

          NOTE: Requires the other boundary.circle parameters to take effect.
          Defaults to 50km if unspecified.
        required: false
        schema:
          $ref: '#/components/schemas/SearchRadius'
        style: form
      - name: size
        in: query
        description: The maximum number of items to return from a query.
        required: false
        schema:
          $ref: '#/components/schemas/QuerySizeLimit'
        style: form
      - name: lang
        in: query
        description: |-
          A BCP47 language tag which specifies a preference for localization of results.
          There is no default value, so place names will be returned as-is,
          which is usually in the local language.
          NOTE: The Accept-Language header is also respected, and many user agents will set it automatically.
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: A GeoJSON FeatureCollection with the results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
        '400':
          description: A response with a description of why the request is malformed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: missing required parameter foo
                type: FeatureCollection
        '500':
          description: A response with a description of what went wrong internally
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: internal server error
                type: FeatureCollection
      security:
      - ApiKeyAuth: []
  /geocoding/v2/reverse:
    get:
      tags:
      - Geocoding
      summary: Find places and addresses near a location point (reverse geocoding).
      description: Reverse geocoding and search finds places and addresses near any geographic coordinates.
      operationId: reverse-v2
      parameters:
      - name: point.lat
        in: query
        description: The latitude of the point at which to perform the search.
        required: true
        schema:
          $ref: '#/components/schemas/Latitude'
        style: form
        example: 48.848268
      - name: point.lon
        in: query
        description: The longitude of the point at which to perform the search.
        required: true
        schema:
          $ref: '#/components/schemas/Longitude'
        style: form
        example: 2.294471
      - name: layers
        in: query
        description: A list of layers to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/LayerId'
        style: form
        explode: false
      - name: sources
        in: query
        description: A list of sources to limit the search to.
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/SourceId'
        style: form
        explode: false
      - name: boundary.gid
        in: query
        description: |-
          The GID of a region to limit the search to.

          Note: these are not stable for all datasets! For example, OSM features may be deleted and re-added with a new ID.
        required: false
        schema:
          $ref: '#/components/schemas/DocumentGid'
        style: form
      - name: boundary.country
        in: query
        description: |-
          A list of comma-separated country codes in ISO 3116-1 alpha-2 or alpha-3 format.
          The search will be limited to these countries.
        required: false
        schema:
          type: array
          items:
            type: string
        style: form
        explode: false
      - name: boundary.circle.radius
        in: query
        description: |-
          The radius of the circle (in kilometers) to limit the search to.

          Defaults to 1km if unspecified.
        required: false
        schema:
          $ref: '#/components/schemas/ReverseRadius'
        style: form
      - name: size
        in: query
        description: The maximum number of items to return from a query.
        required: false
        schema:
          $ref: '#/components/schemas/QuerySizeLimit'
        style: form
      - name: lang
        in: query
        description: |-
          A BCP47 language tag which specifies a preference for localization of results.
          There is no default value, so place names will be returned as-is,
          which is usually in the local language.
          NOTE: The Accept-Language header is also respected, and many user agents will set it automatically.
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: A GeoJSON FeatureCollection with the results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
        '400':
          description: A response with a description of why the request is malformed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: missing required parameter foo
                type: FeatureCollection
        '500':
          description: A response with a description of what went wrong internally
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: internal server error
                type: FeatureCollection
      security:
      - ApiKeyAuth: []
  /geocoding/v2/place_details:
    get:
      tags:
      - Geocoding
      summary: Retrieve detailed information about a place by its GID.
      description: Many search result components include an associated GID field (for example, an address may have a `localadmin_gid`). The place endpoint lets you look up these places directly by ID. Note that GIDs are not stable for all sources. See the [online documentation](https://docs.stadiamaps.com/geocoding-search-autocomplete/place-lookup/) for details.
      operationId: place-details-v2
      parameters:
      - name: ids
        in: query
        required: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/DocumentGid'
          minItems: 1
        style: form
        explode: false
        example:
        - whosonfirst:locality:102026327
      - name: lang
        in: query
        description: |-
          A BCP47 language tag which specifies a preference for localization of results.
          There is no default value, so place names will be returned as-is,
          which is usually in the local language.
          NOTE: The Accept-Language header is also respected, and many user agents will set it automatically.
        required: false
        schema:
          type: string
        style: form
      responses:
        '200':
          description: A GeoJSON FeatureCollection with the results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
        '400':
          description: A response with a description of why the request is malformed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: missing required parameter foo
                type: FeatureCollection
        '500':
          description: A response with a description of what went wrong internally
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeocodeResponseEnvelope_PropertiesV2'
              example:
                features: []
                geocoding:
                  attribution: https://stadiamaps.com/attribution/
                  error: internal server error
                type: FeatureCollection
      security:
      - ApiKeyAuth: []
components:
  schemas:
    AddendumV2:
      type: object
      description: Miscellaneous data that doesn't quite fit anywhere else in the record.
      properties:
        foursquare:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/FoursquareAddendum'
        geonames:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/GeonamesAddendum'
        osm:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/OpenStreetMapAddendum'
        whosonfirst_concordances:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WhosOnFirstConcordances'
    AddressComponentsV2:
      type: object
      description: Structured address components.
      properties:
        cross_street:
          type:
          - string
          - 'null'
          description: The cross street address component (rarely used).
        number:
          type:
          - string
          - 'null'
          description: |-
            The house / building number.

            Note that, despite the name, this is not strictly numeric.
            Values such as 30-1 and 11A may be valid building/house numbers in some areas.
        postal_code:
          type:
          - string
          - 'null'
          description: The postal code.
        street:
          type:
          - string
          - 'null'
          description: The street component of the address.
        unit:
          type:
          - string
          - 'null'
          description: The unit number (where available).
    Context:
      type: object
      description: |-
        The geographic context for a feature.

        Note that while data sources and country codes are listed,
        this does not *necessarily* mean that the view is a specific hierarchy endorsed by that source.
        We generally attempt to present the same view as OpenStreetMap.
        Contact us if your use case requires a specific political view of the world.
      required:
      - whosonfirst
      properties:
        iso_3166_a2:
          type:
          - string
          - 'null'
          description: The ISO 3166-1 alpha-2 country code in which the feature is located.
        iso_3166_a3:
          type:
          - string
          - 'null'
          description: The ISO 3166-1 alpha-3 country code in which the feature is located.
        whosonfirst:
          $ref: '#/components/schemas/WofContext'
          description: The geographic context, with administrative hierarchy modeled using the Who's on First taxonomy.
    Coordinate:
      type: object
      description: A coordinate point with latitude and longitude.
      required:
      - lat
      - lon
      properties:
        lat:
          $ref: '#/components/schemas/Latitude'
        lon:
          $ref: '#/components/schemas/Longitude'
    DocumentGid:
      type: string
      description: 'A globally unique identifier for a feature. Note: these are not stable for all datasets! For example, OSM features may be deleted and re-added with a new ID. Others like Who''s on First guarantee stability long term.'
      examples:
      - whosonfirst:locality:102026327
      - openstreetmap:venue:node/11744981946
    EncodedPolyline:
      type: string
      description: An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm).
      example: wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB
    Feature_PropertiesV2:
      type: object
      required:
      - properties
      properties:
        bbox:
          type:
          - array
          - 'null'
          items:
            type: number
            format: double
          maxItems: 4
          minItems: 4
        geometry:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Point'
        properties:
          type: object
          description: The GeoJSON properties object.
          required:
          - gid
          - layer
          - name
          - precision
          properties:
            addendum:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/AddendumV2'
            address_components:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/AddressComponentsV2'
            coarse_location:
              type:
              - string
              - 'null'
              description: |-
                The coarse-grained location of the place (e.g. Seoul, South Korea).

                In search experiences, this is typically the second line of a result cell.
              examples:
              - Seoul, South Korea
              - London, England
            confidence:
              type:
              - number
              - 'null'
              format: double
              description: |-
                The level of confidence (0.0 - 1.0) that the result is what you actually searched for.

                This is not necessarily the same as relevance (results are returned sorted by relevance already),
                but rather how closely the explicit or inferred components match the result.
                This is only present for forward geocoding responses (not autocomplete or place details).
            context:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/Context'
            distance:
              type:
              - number
              - 'null'
              format: double
              description: The distance from the search focus point, in kilometers.
            formatted_address_line:
              type: string
              description: |-
                The address formatted as a single line,
                following local postal conventions for ordering and separators.
            formatted_address_lines:
              type: array
              items:
                type: string
              description: |-
                Address components split up into lines,
                following local postal conventions for ordering and separators.
            gid:
              type: string
              description: |-
                The globally unique identifier for this result.

                You can use this to uniquely identify a place,
                and to get the full details from the place details endpoint.

                NOTE: While GIDs are unique, they may not necessarily be stable in all datasets.
              examples:
              - whosonfirst:locality:102026327
              - openstreetmap:venue:node/11744981946
            layer:
              type: string
              description: The data layer containing the place (e.g. "address" or "poi").
              examples:
              - address
              - poi
            match_type:
              oneOf:
              - type: 'null'
              - $ref: '#/components/schemas/MatchType'
                description: The type of match (search and structured search only).
            name:
              type: string
              description: |-
                The best name for the place, accounting for request language preferences.

                When building an autocomplete search experience, this is the primary display string.
              examples:
              - Hit Coffee Roasters
              - Golden Gate Bridge
            precision:
              $ref: '#/components/schemas/Precision'
            sources:
              type: array
              items:
                $ref: '#/components/schemas/SourceAttribution'
              description: A list of sources from which the result is derived.
        type:
          type: string
    FoursquareAddendum:
      type: object
      properties:
        tel:
          type:
          - string
          - 'null'
        website:
          type:
          - string
          - 'null'
    GeocodeResponseEnvelope_PropertiesV2:
      type: object
      description: |-
        The GeoJSON response envelope.

        This is parameterized over the feature properties type
        to allow for changes between versions.
      required:
      - features
      - geocoding
      - type
      properties:
        bbox:
          type:
          - array
          - 'null'
          items:
            type: number
            format: double
          description: |-
            The geographic bounding box covering all features in the result set.

            This is empty for autocomplete results.
          maxItems: 4
          minItems: 4
        features:
          type: array
          items:
            $ref: '#/components/schemas/Feature_PropertiesV2'
        geocoding:
          $ref: '#/components/schemas/GeocodingMeta'
        type:
          type: string
          description: |-
            The GeoJSON object type as defined in RFC 7946.

            NOTE: This is always FeatureCollection, as the response envelope is designed to hold multiple results.
    GeocodingMeta:
      type: object
      required:
      - attribution
      properties:
        attribution:
          type: string
        error:
          type:
          - string
          - 'null'
          description: Errors encountered serving the request (if any).
        query:
          type:
          - object
          - 'null'
          description: |-
            An object containing all valid, parsed query parameters.

            For example, this will contain text and possibly other parameters for an autocomplete query.
            This will not be present for invalid requests.
    GeonamesAddendum:
      type: object
      required:
      - feature_code
      properties:
        feature_code:
          type: string
          description: The GeoNames feature code (for GeoNames results only).
    HeightPrecision:
      type: integer
      format: int64
      description: The decimal precision (number of digits after the point) of the output. When 0, integer values are returned. Valid values are 0, 1, and 2.
      examples:
      - 0
      - 1
      - 2
      maximum: 2
      minimum: 0
    HeightResponse:
      type: object
      description: Response from the elevation endpoint.
      properties:
        id:
          type:
          - string
          - 'null'
          description: The request identifier, if provided.
          example: kesklinn
        shape:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Coordinate'
          description: The input shape, if provided as coordinates.
        encoded_polyline:
          type:
          - string
          - 'null'
          description: The input polyline.
        height:
          type:
          - array
          - 'null'
          items:
            type:
            - number
            - 'null'
            format: float
          description: |-
            The list of heights for each point, in meters. Present only if `range` is `false`.
            Null values indicate missing data.
        range_height:
          type:
          - array
          - 'null'
          items:
            type: array
            items:
              type:
              - number
              - 'null'
              format: float
          description: |-
            The list of ranges and heights for each point in the shape, where each entry is an array of length 2.
            Present only if `range` is `true`.

            In each pair, the first element represents the range or distance along the input locations. It is the
            cumulative distance along the previous coordinates in the shape up to the current coordinate.
            This value for the first coordinate in the shape will always be 0.
            The second element in the pair represents the height or elevation at the associated coordinate. The height
            is null if no height data exists for a given location.
            Both values are expressed in meters.
    Latitude:
      type: number
      format: double
      description: Latitude in decimal degrees.
      examples:
      - 12.345678
      - -12.345678
      maximum: 90
      minimum: -90
    LayerId:
      type: string
      description: Canonical geocoding layer IDs for querying.
      enum:
      - poi
      - address
      - street
      - country
      - macroregion
      - region
      - macrocounty
      - county
      - locality
      - localadmin
      - borough
      - neighbourhood
      - postalcode
      - dependency
      - macrohood
      - marinearea
      - disputed
      - empire
      - continent
      - ocean
      - coarse
    Longitude:
      type: number
      format: double
      description: Longitude in decimal degrees.
      examples:
      - 12.345678
      - -12.345678
      maximum: 180
      minimum: -180
    MatchType:
      type: string
      enum:
      - match
      - interpolated
      - fallback
    OpenStreetMapAddendum:
      type: object
      description: |-
        OpenStreetMap-specific additional fields.

        These values are exactly as they appear in the associated OSM tag.
      properties:
        brand:
          type:
          - string
          - 'null'
          description: |-
            The principal brand of goods/services sold at a place,
            or the common identity for individually owned and operated stores.
        iata:
          type:
          - string
          - 'null'
          description: IATA airport code.
        icao:
          type:
          - string
          - 'null'
          description: ICAO airport code.
        opening_hours:
          type:
          - string
          - 'null'
          description: |-
            The opening hours of the place, in the OSM Opening Hours specification.

            See https://wiki.openstreetmap.org/wiki/Key:opening_hours/specification for details.
        operator:
          type:
          - string
          - 'null'
          description: |-
            The company, corp, person, or other entity directly in charge of operating something.

            This is often used for public transport, hotels, restaurants, and postal services.
            See https://wiki.openstreetmap.org/wiki/Key:operator for details
        phone:
          type:
          - string
          - 'null'
        website:
          type:
          - string
          - 'null'
        wheelchair:
          type:
          - string
          - 'null'
          description: Is this place wheelchair accessible?
        wikidata:
          type:
          - string
          - 'null'
          description: Wikidata concordance ID.
        wikipedia:
          type:
          - string
          - 'null'
          description: Wikipedia concordance ID.
    Point:
      type: object
      description: A point geometry in GeoJSON format.
      required:
      - coordinates
      - type
      properties:
        coordinates:
          type: array
          items:
            type: number
            format: double
          maxItems: 2
          minItems: 2
        type:
          type: string
    Precision:
      type: string
      description: The level of detail for the geometry.
      enum:
      - point
      - centroid
    PropertiesV2:
      type: object
      description: The GeoJSON properties object.
      required:
      - gid
      - layer
      - name
      - precision
      properties:
        addendum:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/AddendumV2'
        address_components:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/AddressComponentsV2'
        coarse_location:
          type:
          - string
          - 'null'
          description: |-
            The coarse-grained location of the place (e.g. Seoul, South Korea).

            In search experiences, this is typically the second line of a result cell.
          examples:
          - Seoul, South Korea
          - London, England
        confidence:
          type:
          - number
          - 'null'
          format: double
          description: |-
            The level of confidence (0.0 - 1.0) that the result is what you actually searched for.

            This is not necessarily the same as relevance (results are returned sorted by relevance already),
            but rather how closely the explicit or inferred components match the result.
            This is only present for forward geocoding responses (not autocomplete or place details).
        context:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/Context'
        distance:
          type:
          - number
          - 'null'
          format: double
          description: The distance from the search focus point, in kilometers.
        formatted_address_line:
          type: string
          description: |-
            The address formatted as a single line,
            following local postal conventions for ordering and separators.
        formatted_address_lines:
          type: array
          items:
            type: string
          description: |-
            Address components split up into lines,
            following local postal conventions for ordering and separators.
        gid:
          type: string
          description: |-
            The globally unique identifier for this result.

            You can use this to uniquely identify a place,
            and to get the full details from the place details endpoint.

            NOTE: While GIDs are unique, they may not necessarily be stable in all datasets.
          examples:
          - whosonfirst:locality:102026327
          - openstreetmap:venue:node/11744981946
        layer:
          type: string
          description: The data layer containing the place (e.g. "address" or "poi").
          examples:
          - address
          - poi
        match_type:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/MatchType'
            description: The type of match (search and structured search only).
        name:
          type: string
          description: |-
            The best name for the place, accounting for request language preferences.

            When building an autocomplete search experience, this is the primary display string.
          examples:
          - Hit Coffee Roasters
          - Golden Gate Bridge
        precision:
          $ref: '#/components/schemas/Precision'
        sources:
          type: array
          items:
            $ref: '#/components/schemas/SourceAttribution'
          description: A list of sources from which the result is derived.
    QuerySizeLimit:
      type: integer
      format: int64
      description: The maximum number of items to return.
      examples:
      - 3
      - 10
      maximum: 25
      minimum: 1
    ResampleDistance:
      type: integer
      format: int64
      description: The distance in meters at which the input polyline should be sampled to provide uniform distances between points.
      examples:
      - 10
      - 50
      - 100
      maximum: 1000
      minimum: 10
    ReverseRadius:
      type: integer
      format: int64
      description: A radius, measured in kilometers.
      examples:
      - 1
      - 25
      maximum: 25
      minimum: 1
    SearchRadius:
      type: integer
      format: int64
      description: A radius, measured in kilometers.
      examples:
      - 1
      - 42
      maximum: 5000
      minimum: 1
    ShapeFormat:
      type: string
      description: Specifies the precision of an encoded polyline.
      enum:
      - polyline6
      - polyline5
    SourceAttribution:
      type: object
      required:
      - source
      - source_id
      properties:
        fixit_url:
          type:
          - string
          - 'null'
          description: |-
            A URL where you can submit changes to the source data for a place
            (e.g. edit on OpenStreetMap, Foursquare Placemaker, etc.).
        source:
          type: string
          description: The source identifier.
          examples:
          - whosonfirst
          - openstreetmap
        source_id:
          type: string
          description: The ID of the record as it appears in the original source.
          examples:
          - '85633135'
          - node/4957653990
    SourceId:
      type: string
      description: Canonical data source identifiers.
      enum:
      - openstreetmap
      - openaddresses
      - whosonfirst
      - geonames
      - foursquare
    WhosOnFirstConcordances:
      type: object
      properties:
        eurographics_gisco_id:
          type:
          - string
          - 'null'
        faa_code:
          type:
          - string
          - 'null'
        factual_id:
          type:
          - string
          - 'null'
        fifa_id:
          type:
          - string
          - 'null'
        fips_code:
          type:
          - string
          - 'null'
        fr_gov_epci_code:
          type:
          - integer
          - 'null'
          format: int64
          description: An Open Data France EPCI code.
        fra_insee_code:
          type:
          - integer
          - 'null'
          format: int64
          description: Institut national de la statistique et des études économiques (Insee) code
        geonames_id:
          type:
          - integer
          - 'null'
          format: int64
        geoplanet_id:
          type:
          - integer
          - 'null'
          format: int64
        hasc_id:
          type:
          - string
          - 'null'
          description: A Statoids HASC ID.
        iata_code:
          type:
          - string
          - 'null'
        icao_code:
          type:
          - string
          - 'null'
        itu_id:
          type:
          - string
          - 'null'
        karmashapes_id:
          type:
          - string
          - 'null'
        natural_earth_id:
          type:
          - integer
          - 'null'
          format: int64
        nuts_2021_id:
          type:
          - string
          - 'null'
          description: A Eurostat NUTS 2021 ID
        quattroshapes_id:
          type:
          - integer
          - 'null'
          format: int64
        quattroshapes_pg_id:
          type:
          - integer
          - 'null'
          format: int64
          description: A Quattroshapes Point Gazetteer ID.
        us_census_geo_id:
          type:
          - integer
          - 'null'
          format: int64
        wikidata_id:
          type:
          - string
          - 'null'
        wikipedia_page:
          type:
          - string
          - 'null'
    WofContext:
      type: object
      properties:
        borough:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        continent:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        country:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        county:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        dependency:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        localadmin:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        locality:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        macrocounty:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        macroregion:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        marinearea:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        neighbourhood:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        ocean:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
        region:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/WofContextComponent'
    WofContextComponent:
      type: object
      required:
      - gid
      - name
      properties:
        abbreviation:
          type:
          - string
          - 'null'
        gid:
          $ref: '#/components/schemas/DocumentGid'
        name:
          type: string
    access:
      type: object
      properties:
        golf_cart:
          type: boolean
        wheelchair:
          type: boolean
        taxi:
          type: boolean
        HOV:
          type: boolean
        truck:
          type: boolean
        emergency:
          type: boolean
        pedestrian:
          type: boolean
        car:
          type: boolean
        bus:
          type: boolean
        bicycle:
          type: boolean
        motorcycle:
          type: boolean
        moped:
          type: boolean
    adminRegion:
      type: object
      properties:
        country_code:
          type: string
          description: The [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code.
        country_text:
          type: string
          description: The country name
        state_code:
          type: string
          description: The abbreviation code for the state (varies by country).
        state_text:
          type: string
          description: The state name.
    administrative:
      type: object
      properties:
        iso_3166-1:
          type: string
          description: The ISO 3166-1 alpha-2 country code of the administrative region.
        country:
          type: string
          description: The full country name.
        iso_3166-2:
          type: string
          description: 'The ISO 3166-2 code identifying the principal subdivision (ex: provinces or states) within a country.'
        state:
          type: string
          description: The full state or province name.
    annotationFilters:
      type: object
      properties:
        action:
          type: string
          enum:
          - include
          - exclude
        attributes:
          type: array
          items:
            type: string
            enum:
            - shape_attributes.speed
            - shape_attributes.speed_limit
            - shape_attributes.time
            - shape_attributes.length
          description: A set of granular attributes to include between every pair of coordinates along the route. This can significantly increase the response size.
    autoCostingOptions:
      allOf:
      - $ref: '#/components/schemas/baseCostingOptions'
      - type: object
        properties:
          height:
            type: number
            format: double
            description: The height of the automobile (in meters).
            default: 1.9
          width:
            type: number
            format: double
            description: The width of the automobile (in meters).
            default: 1.6
          toll_booth_cost:
            type: integer
            description: The estimated cost (in seconds) when a toll booth is encountered.
            default: 15
          toll_booth_penalty:
            type: integer
            description: A penalty (in seconds) applied to the route cost when a toll booth is encountered. This penalty can be used to reduce the likelihood of suggesting a route with toll booths unless absolutely necessary.
            default: 0
          exclude_cash_only_tolls:
            type: boolean
            description: If true, avoids routes with cash-only tolls.
            default: false
          exclude_unpaved:
            type: boolean
            description: Indicates whether or not the path may include unpaved roads. If true, the route is allowed to start and end with unpaved roads, but is not allowed to have them in the middle of the route path. Otherwise they are allowed.
            default: false
          use_highways:
            type: number
            format: double
            description: A measure of willingness to take highways. Values near 0 attempt to avoid highways, and values near 1 will favour them. Note that as some routes may be impossible without highways, 0 does not guarantee avoidance of them.
            default: 0.5
            maximum: 1
            minimum: 0
          use_tolls:
            type: number
            format: double
            description: A measure of willingness to take toll roads. Values near 0 attempt to avoid tolls, and values near 1 will favour them. Note that as some routes may be impossible without tolls, 0 does not guarantee avoidance of them.
            default: 0.5
            maximum: 1
            minimum: 0
          use_tracks:
            $ref: '#/components/schemas/useTracksCostingOption'
          top_speed:
            type: integer
            description: The top speed (in kph) that the vehicle is capable of travelling.
            default: 140
            maximum: 252
            minimum: 10
          shortest:
            type: boolean
            description: If true changes the cost metric to be quasi-shortest (pure distance-based) costing. This will disable ALL other costing factors.
            default: false
          ignore_closures:
            type: boolean
            description: If true, ignores all known closures. This option cannot be set if `location.search_filter.exclude_closures` is also specified.
            default: false
          include_hov2:
            type: boolean
            description: If true, indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.
            default: false
          include_hov3:
            type: boolean
            description: If true, indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.
            default: false
          include_hot:
            type: boolean
            description: If true, indicates the desire to include toll roads which require the driver to pay a toll if the occupant requirement isn't met
            default: false
          alley_factor:
            type: number
            format: double
            description: A factor that multiplies the cost when alleys are encountered.
            default: 1
          use_distance:
            type: number
            format: double
            description: A measure of preference for time vs. distance. Values near 0 (default) optimize for time, while values near 1 optimize for shortest distance.
            default: 0
            maximum: 1
            minimum: 0
          closure_factor:
            type: number
            format: double
            description: A factor that penalizes the cost of traversing closed edges. The value is a multiplier on the cost of a closed edge; higher values make closed edges less likely to be used.
            default: 9
            maximum: 10
            minimum: 1
    baseCostingOptions:
      type: object
      properties:
        maneuver_penalty:
          type: integer
          description: A penalty (in seconds) applied when transitioning between roads (determined by name).
          default: 5
        gate_cost:
          type: integer
          description: The estimated cost (in seconds) when a gate is encountered.
          default: 15
        gate_penalty:
          type: integer
          description: A penalty (in seconds) applied to the route cost when a gate is encountered. This penalty can be used to reduce the likelihood of suggesting a route with gates unless absolutely necessary.
          default: 300
        country_crossing_cost:
          type: integer
          description: The estimated cost (in seconds) when encountering an international border.
          default: 600
        country_crossing_penalty:
          type: integer
          description: A penalty applied to transitions to international border crossings. This penalty can be used to reduce the likelihood of suggesting a route with border crossings unless absolutely necessary.
          default: 0
        service_penalty:
          $ref: '#/components/schemas/servicePenaltyCostingOption'
        service_factor:
          $ref: '#/components/schemas/serviceFactorCostingOption'
        use_living_streets:
          $ref: '#/components/schemas/useLivingStreetsCostingOption'
        use_ferry:
          $ref: '#/components/schemas/useFerryCostingOption'
        ignore_restrictions:
          type: boolean
          description: 'If set to true, ignores any restrictions (eg: turn and conditional restrictions). Useful for matching GPS traces to the road network regardless of restrictions.'
        ignore_non_vehicular_restrictions:
          type: boolean
          description: 'If set to true, ignores most restrictions (eg: turn and conditional restrictions), but still respects restrictions that impact vehicle safety such as weight and size.'
        ignore_oneways:
          type: boolean
          description: If set to true, ignores directional restrictions on roads. Useful for matching GPS traces to the road network regardless of restrictions.
        private_access_penalty:
          type: number
          format: double
          description: A penalty (in seconds) for accessing private roads.
          default: 450
        alley_penalty:
          type: number
          format: double
          description: A penalty (in seconds) for using alleys.
        rail_ferry_cost:
          type: integer
          description: The estimated cost (in seconds) when a rail ferry is encountered. Only applies to costing models that support rail ferries (auto, truck, motorcycle).
          default: 300
        use_rail_ferry:
          type: number
          format: double
          description: A measure of willingness to take rail ferries. Values near 0 attempt to avoid rail ferries, and values near 1 will favor them. Note that as some routes may be impossible without rail ferries, 0 does not guarantee avoidance of them. Only applies to auto, truck, and motorcycle costing.
          default: 0.4
          maximum: 1
          minimum: 0
        ignore_access:
          type: boolean
          description: If set to true, ignores access restrictions for the route.
          default: false
        ferry_cost:
          type: integer
          description: The estimated cost (in seconds) when a ferry is encountered.
          default: 300
    baseTraceRequest:
      allOf:
      - type: object
        required:
        - costing
        properties:
          id:
            $ref: '#/components/schemas/requestId'
          shape:
            type: array
            items:
              $ref: '#/components/schemas/mapMatchWaypoint'
            description: REQUIRED if `encoded_polyline` is not present. Note that `break` type locations are only supported when `shape_match` is set to `map_match`.
          encoded_polyline:
            type: string
            description: REQUIRED if `shape` is not present. An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm). Note that the polyline must be encoded with 6 digits of precision rather than the default 5!
          costing:
            $ref: '#/components/schemas/mapMatchCostingModel'
          costing_options:
            $ref: '#/components/schemas/costingOptions'
          date_time:
            $ref: '#/components/schemas/timeConstraintV1'
          shape_match:
            type: string
            description: |-
              Three snapping modes provide some control over how the map matching occurs. `edge_walk` is fast, but requires extremely precise data that matches the route graph almost perfectly. `map_snap` can handle significantly noisier data, but is very expensive. `walk_or_snap`, the default, tries to use edge walking first and falls back to map matching if edge walking fails.
              In general, you should not need to change this parameter unless you want to trace a multi-leg route with multiple `break` locations in the `shape`.
            enum:
            - edge_walk
            - map_snap
            - walk_or_snap
    bicycleCostingOptions:
      allOf:
      - $ref: '#/components/schemas/baseCostingOptions'
      - type: object
        properties:
          bicycle_type:
            type: string
            description: |-
              The type of bicycle:
              * Road: has narrow tires and is generally lightweight and designed for speed on paved surfaces * Hybrid or City: designed for city riding or casual riding on roads and paths with good surfaces * Cross: similar to a road bike, but has wider tires so it can handle rougher surfaces * Mountain: able to handle most surfaces, but generally heavier and slower on paved surfaces
            default: Hybrid
            enum:
            - Road
            - Hybrid
            - Cross
            - Mountain
          cycling_speed:
            type: integer
            description: |-
              The average comfortable travel speed (in kph) along smooth, flat roads. The costing will vary the speed based on the surface, bicycle type, elevation change, etc. This value should be the average sustainable cruising speed the cyclist can maintain over the entire route.
              The default speeds are as follows based on bicycle type:
                * Road - 25kph
                * Cross - 20kph
                * Hybrid - 18kph
                * Mountain - 16kph
          use_roads:
            type: number
            format: double
            description: A measure of willingness to use roads alongside other vehicles. Values near 0 attempt to avoid roads and stay on cycleways, and values near 1 indicate the cyclist is more comfortable on roads.
            default: 0.5
            maximum: 1
            minimum: 0
          use_hills:
            $ref: '#/components/schemas/useHillsCostingOption'
          avoid_bad_surfaces:
            type: number
            format: double
            description: A measure of how much the cyclist wants to avoid roads with poor surfaces relative to the type of bicycle being ridden. When 0, there is no penalization of roads with poorer surfaces, and only bicycle speed is taken into account. As the value approaches 1, roads with poor surfaces relative to the bicycle type receive a heaver penalty, so they will only be taken if they significantly reduce travel time. When the value is 1, all bad surfaces are completely avoided from the route, including the start and end points.
            default: 0.25
            maximum: 1
            minimum: 0
          bss_return_cost:
            type: integer
            description: The estimated cost (in seconds) to return a bicycle in `bikeshare` mode.
            default: 120
          bss_return_penalty:
            type: integer
            description: A penalty (in seconds) to return a bicycle in `bikeshare` mode.
            default: 0
    bikeNetwork:
      type: object
      properties:
        mountain:
          type: boolean
        local:
          type: boolean
        regional:
          type: boolean
        national:
          type: boolean
    bulkSearchRequest:
      type: array
      items:
        type: object
        title: BulkRequest
        required:
        - endpoint
        - query
        properties:
          endpoint:
            type: string
            enum:
            - /v1/search
            - /v1/search/structured
            - /v1/reverse
          query:
            oneOf:
            - $ref: '#/components/schemas/searchQuery'
            - $ref: '#/components/schemas/searchStructuredQuery'
            - $ref: '#/components/schemas/reverseQuery'
      example:
      - endpoint: /v1/search
        query:
          text: Põhja pst 27
      - endpoint: /v1/search
        query:
          lang: en
          text: 101 N Main St, Greenville SC
      - endpoint: /v1/reverse
        query:
          lang: en
          point.lat: 48.848268
          point.lon: 2.294471
    bulkSearchResponse:
      type: object
      required:
      - status
      properties:
        status:
          type: integer
        response:
          $ref: '#/components/schemas/geocodeResponse'
        msg:
          type: string
          description: An error message describing what went wrong (if the status is not 200).
    contour:
      type: object
      properties:
        time:
          type: number
          format: double
          description: The time in minutes for the contour. Mutually exclusive of distance.
          example: 15
          maximum: 120
        distance:
          type: number
          format: double
          description: The distance in km for the contour. Mutually exclusive of time.
          example: 10.0
          maximum: 200
        color:
          type: string
          description: The color for the output contour, specified as a hex value (without a leading `#`). If no color is specified, one will be assigned automatically.
          example: aabbcc
    coordinate:
      type: object
      required:
      - lat
      - lon
      properties:
        lat:
          type: number
          format: double
          description: The latitude of a point in the shape.
          example: 59.436884
          maximum: 90
          minimum: -90
        lon:
          type: number
          format: double
          description: The longitude of a point in the shape.
          example: 24.742595
          maximum: 180
          minimum: -180
    costingModel:
      type: string
      description: |-
        A routing profile that determines which roads you can access, and how desirable they are based on the type of travel and other parameters.
        Profiles with a `_traffic` suffix use heuristically-selected traffic data sources to improve ETA and time-dependent route quality while balancing the credit cost. The `_traffic_premium` profiles leverage multiple types of data for maximum accuracy. Traffic-influenced profiles use the same costing options as their base profile (e.g., use the `auto` key in `costing_options` for `auto_traffic`).
      enum:
      - auto
      - auto_traffic
      - auto_traffic_premium
      - bus
      - bus_traffic
      - bus_traffic_premium
      - taxi
      - taxi_traffic
      - taxi_traffic_premium
      - truck
      - truck_traffic
      - truck_traffic_premium
      - bicycle
      - bikeshare
      - motor_scooter
      - motorcycle
      - pedestrian
      - low_speed_vehicle
    costingOptions:
      type: object
      properties:
        auto:
          $ref: '#/components/schemas/autoCostingOptions'
        bus:
          $ref: '#/components/schemas/autoCostingOptions'
        taxi:
          $ref: '#/components/schemas/autoCostingOptions'
        truck:
          $ref: '#/components/schemas/truckCostingOptions'
        bicycle:
          $ref: '#/components/schemas/bicycleCostingOptions'
        motor_scooter:
          $ref: '#/components/schemas/motorScooterCostingOptions'
        motorcycle:
          $ref: '#/components/schemas/motorcycleCostingOptions'
        pedestrian:
          $ref: '#/components/schemas/pedestrianCostingOptions'
        low_speed_vehicle:
          $ref: '#/components/schemas/lowSpeedVehicleCostingOptions'
    directionsOptions:
      type: object
      properties:
        units:
          $ref: '#/components/schemas/distanceUnit'
        language:
          $ref: '#/components/schemas/routingLanguages'
        directions_type:
          type: string
          description: The level of directional narrative to include. Locations and times will always be returned, but narrative generation verbosity can be controlled with this parameter.
          default: instructions
          enum:
          - none
          - maneuvers
          - instructions
    distanceUnit:
      type: string
      default: km
      enum:
      - km
      - mi
    edgeSign:
      type: object
      properties:
        exit_number:
          type: array
          items:
            type: string
            description: An exit number.
            example: 91B
        exit_branch:
          type: array
          items:
            type: string
            description: A subsequent road name or route number after the sign.
            example: I 95 North
        exit_toward:
          type: array
          items:
            type: string
            description: The interchange identifier (used more frequently outside the US).
            example: New York
        exit_name:
          type: array
          items:
            type: string
            description: The location where the road ahead goes (typically a city, but occasionally a road name or route number).
            example: Gettysburg Pike
    edgeUse:
      type: string
      description: The use for the edge.
      enum:
      - road
      - ramp
      - turn_channel
      - track
      - driveway
      - alley
      - parking_aisle
      - emergency_access
      - drive_through
      - culdesac
      - living_street
      - service_road
      - cycleway
      - mountain_bike
      - sidewalk
      - footway
      - steps
      - path
      - pedestrian
      - pedestrian_crossing
      - bridleway
      - rest_area
      - service_area
      - other
      - ferry
      - rail-ferry
      - rail
      - bus
      - egress_connection
      - platform_connection
      - transit_connection
    elevation_interval:
      type: number
      format: float
      description: |-
        If greater than zero, attempts to include elevation along the route at regular intervals. The "native" internal resolution is 30m, so we recommend you use this when possible. This number is interpreted as either meters or feet depending on the unit parameter.
        Elevation for route sections containing a bridge or tunnel is interpolated linearly. This doesn't always match the true elevation of the bridge/tunnel, but it prevents sharp artifacts from the surrounding terrain. This functionality is unique to the routing endpoints and is not available via the elevation API.
        NOTE: This has no effect on the OSRM response format.
      default: 0.0
    endNode:
      type: object
      description: The node at the end of this edge
      properties:
        intersecting_edges:
          type: array
          items:
            $ref: '#/components/schemas/intersectingEdge'
          description: A set of edges intersecting this node.
        elapsed_time:
          type: number
          format: double
          description: The elapsed time along the path to arrive at this node.
        admin_index:
          type: integer
          description: The index into the `admins` list in which this node lies.
        type:
          $ref: '#/components/schemas/nodeType'
        fork:
          type: boolean
          description: True if this node is a fork.
        time_zone:
          type: string
          description: The canonical TZDB identifier for the node's time zone.
          example: America/New_York
    extendedDirectionsOptions:
      type: object
      properties:
        format:
          type: string
          description: The output response format. The default JSON format is extremely compact and ideal for web or data-constrained use cases where you want to fetch additional attributes on demand in small chunks. The OSRM format is much richer and is configurable with significantly more info for turn-by-turn navigation use cases.
          enum:
          - json
          - osrm
        banner_instructions:
          type: boolean
          description: Optionally includes helpful banners with timing information for turn-by-turn navigation. This is only available in the OSRM format.
        voice_instructions:
          type: boolean
          description: Optionally includes voice instructions with timing information for turn-by-turn navigation. This is only available in the OSRM format.
        filters:
          $ref: '#/components/schemas/annotationFilters'
    geoAttributes:
      type: object
      properties:
        curvature:
          type: integer
          description: Curvature factor.
        max_down_slope:
          type: number
          format: float
          description: The maximum downward slope. Uses 1 degree precision for slopes to -16 degrees, and 4 degree precision afterwards (up to a max of -76 degrees).
        max_up_slope:
          type: number
          format: float
          description: The maximum upward slope. Uses 1 degree precision for slopes to 16 degrees, and 4 degree precision afterwards (up to a max of 76 degrees).
        weighted_grade:
          type: number
          format: float
          description: The weighted estimate of the grade.
        length:
          type: integer
          description: The length of the edge, in meters.
    geoJSONGeometryBase:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - Point
          - MultiPoint
          - LineString
          - MultiLineString
          - Polygon
          - MultiPolygon
    geoJSONPoint:
      allOf:
      - $ref: '#/components/schemas/geoJSONGeometryBase'
      - type: object
        required:
        - coordinates
        properties:
          coordinates:
            type: array
            items:
              type: number
              format: double
            maxItems: 3
            minItems: 2
    geocodeLang:
      type: string
      description: A BCP47 language tag which specifies a preference for localization of results. By default, results are in the default locale of the source data, but specifying a language will attempt to localize the results. Note that while a `langtag` (in RFC 5646 terms) can contain script, region, etc., only the `language` portion, an ISO 639 code, will be considered. So `en-US` and `en-GB` will both be treated as English.
    geocodeResponse:
      type: object
      required:
      - geocoding
      - features
      properties:
        geocoding:
          allOf:
          - $ref: '#/components/schemas/geocodingObject'
        bbox:
          type: array
          items:
            type: number
            format: double
          description: An array of 4 floating point numbers representing the (W, S, E, N) extremes of the features found.
          maxItems: 4
          minItems: 4
        features:
          type: array
          items:
            $ref: '#/components/schemas/geocodingGeoJSONFeature'
      example:
        bbox:
        - -77.036547
        - 38.897675
        - -77.036547
        - 38.897675
        features:
        - geometry:
            coordinates:
            - -77.036547
            - 38.897675
            type: Point
          properties:
            accuracy: point
            confidence: 1
            continent: North America
            continent_gid: whosonfirst:continent:102191575
            country: United States
            country_a: USA
            country_code: US
            country_gid: whosonfirst:country:85633793
            county: District of Columbia
            county_a: DI
            county_gid: whosonfirst:county:1377370667
            gid: openaddresses:address:us/dc/statewide:aa53d4bd0fe295be
            housenumber: '1600'
            id: us/dc/statewide:aa53d4bd0fe295be
            label: 1600 Pennsylvania Avenue NW, Washington, DC, USA
            layer: address
            locality: Washington
            locality_gid: whosonfirst:locality:85931779
            match_type: exact
            name: 1600 Pennsylvania Avenue NW
            neighbourhood: White House Grounds
            neighbourhood_gid: whosonfirst:neighbourhood:1108724059
            postalcode: '20500'
            region: District of Columbia
            region_a: DC
            region_gid: whosonfirst:region:85688741
            source: openaddresses
            source_id: us/dc/statewide:aa53d4bd0fe295be
            street: Pennsylvania Avenue NW
          type: Feature
        geocoding:
          attribution: https://stadiamaps.com/attribution
          engine:
            name: Theseus
            version: '1.0'
          query:
            lang:
              defaulted: true
              iso6391: en
              iso6393: eng
              name: English
              via: default
            parsed_text:
              housenumber: '1600'
              street: pennsylvania ave nw
            parser: libpostal
            private: false
            querySize: 20
            size: 10
            text: 1600 Pennsylvania Ave NW
          timestamp: 1679043782383
          version: '0.2'
        type: FeatureCollection
    geocodingGeoJSONFeature:
      type: object
      required:
      - type
      - geometry
      properties:
        type:
          type: string
          enum:
          - Feature
        geometry:
          $ref: '#/components/schemas/geoJSONPoint'
        properties:
          $ref: '#/components/schemas/geocodingGeoJSONProperties'
        bbox:
          type: array
          items:
            type: number
            format: double
          description: An array of 4 floating point numbers representing the (W, S, E, N) extremes of the features found.
          maxItems: 4
          minItems: 4
    geocodingGeoJSONProperties:
      type: object
      properties:
        gid:
          type: string
          description: A scoped GID for this result. This can be passed to the place endpoint. Note that these are not always stable long-term.
        source_id:
          type: string
          description: An ID referencing the original data source (specified via source) for the result. These IDs are specific to the source that they originated from. For example, in the case of OSM, these typically look like way/123 or point/123.
        label:
          type: string
          description: 'A full, human-readable label. However, you may not necessarily want to use this; be sure to read the docs for name, locality, and region before making a decision. This field is mostly localized. The order of components is generally locally correct (ex: for an address in South Korea, the house number appears after the street name). However, components will use a request language equivalent if one exists (ex: Seoul instead of 서울 if lang=en).'
        layer:
          type: string
          description: The data layer containing the place (e.g. "address" or "venue").
        source:
          type: string
          description: The ID of the data source that the result came from.
        name:
          type: string
          description: The name of the place, the street address including house number, or label of similar relevance. If your app is localized to a specific region, you may get better display results by combining name, locality OR region (or neither?), and postal code together in the local format. Experiment with what works best for your use case.
        accuracy:
          type: string
          description: |-
            The accuracy of the geographic coordinates in the result. This value is a property of the result itself and won't change based on the query.
            A point result means that the record can reasonably be represented by a single geographic point. Addresses, venues, or interpolated addresses usually have point accuracy.
            Larger areas, such as a city or country, cannot be represented by a single point, so a centroid is given instead.
          enum:
          - point
          - centroid
        addendum:
          type: object
          description: 'Optional additional information from the underlying data source (ex: OSM). This includes select fields. The most useful fields are mapped in the definition here, but others may be available.'
          properties:
            osm:
              type: object
              properties:
                website:
                  type: string
                  format: uri
                wikipedia:
                  type: string
                wikidata:
                  type: string
                phone:
                  type: string
              additionalProperties: true
          additionalProperties: true
        continent:
          type: string
        continent_gid:
          type: string
        country:
          type: string
        country_a:
          type: string
          description: The ISO 3166-1 alpha-3 code for the country the place is located in.
        country_code:
          type: string
          description: The ISO 3166-1 alpha-2 code for the country the place is located in.
        country_gid:
          type: string
        neighbourhood:
          type: string
        neighbourhood_gid:
          type: string
        borough:
          type: string
        borough_gid:
          type: string
        postalcode:
          type: string
        street:
          type: string
        housenumber:
          type: string
        locality:
          type: string
          description: The city, village, town, etc. that the place / address is part of. Note that values may not always match postal or local conventions perfectly.
        locality_gid:
          type: string
        county:
          type: string
          description: Administrative divisions between localities and regions. Useful for disambiguating nearby results with similar names.
        county_gid:
          type: string
        region:
          type: string
          description: Typically the first administrative division within a country. For example, a US state or a Canadian province.
        region_a:
          type: string
          description: The abbreviation for the region (e.g. PA for the US state of Pennsylvania).
        region_gid:
          type: string
        localadmin:
          type: string
          description: In many countries, this is the lowest level of government. Sometimes interchangeable with locality.
        localadmin_gid:
          type: string
        match_type:
          type: string
          description: For search and structured search results, the type of match.
          enum:
          - exact
          - interpolated
          - fallback
        confidence:
          type: number
          format: double
          description: The level of confidence that the result matches what the user searched for. Only available on forward geocoding endpoints.
          maximum: 1
          minimum: 0
      additionalProperties: true
    geocodingLayer:
      type: string
      description: |
        Our database is organized into several layers (in the GIS sense of the term) as follows:

        - `venue`: Points of interest, businesses, and things with walls
        - `address`: Places with a street address
        - `street`: Streets, roads, highways
        - `county`: Places that issue passports, nations, nation-states
        - `macroregion`: A related group of regions (mostly in Europe)
        - `region`: The first administrative division within a country (usually states and provinces)
        - `macrocounty`: A related group of counties (mostly in Europe)
        - `county`: Official governmental areas; usually bigger than a locality, but almost always smaller than a region
        - `locality`: Towns, hamlets, cities, etc.
        - `localadmin`: Local administrative boundaries
        - `borough`: Local administrative boundaries within cities (not widely used, but present in places such as NYC and Mexico City)
        - `neighbourhood`: Social communities and neighborhoods (note the British spelling in the API!)
        - `postalcode`: Postal codes used by mail services (note: not used for reverse geocoding)
        - `coarse`: An alias for simultaneously using all administrative layers (everything except `venue` and `address`)
        - `marinearea`: Places with fishes and boats.
        - `ocean`: A really big marine area.
      enum:
      - venue
      - address
      - street
      - country
      - macroregion
      - region
      - macrocounty
      - county
      - locality
      - localadmin
      - borough
      - neighbourhood
      - postalcode
      - coarse
      - dependency
      - macrohood
      - marinearea
      - disputed
      - empire
      - continent
      - ocean
    geocodingObject:
      type: object
      properties:
        attribution:
          type: string
          format: uri
          description: A URL containing attribution information. If you are not using Stadia Maps and our standard attribution already for your basemaps, you must include this attribution link somewhere in your website/app.
        query:
          type: object
          description: Technical details of the query. This is most useful for debugging during development. See the full example for the list of properties; these should be self-explanatory, so we don't enumerate them in the spec.
          additionalProperties: true
        warnings:
          type: array
          items:
            type: string
          description: An array of non-critical warnings. This is normally for informational/debugging purposes and not a serious problem.
        errors:
          type: array
          items:
            type: string
          description: An array of more serious errors (for example, omitting a required parameter). Don’t ignore these.
    geocodingSource:
      type: string
      description: Our database contains info from multiple sources. These identifiers can be used to either limit search results or to determine the relevance of a result.
      enum:
      - openstreetmap
      - openaddresses
      - whosonfirst
      - geonames
      - foursquare
    heightRequest:
      type: object
      description: Request body for the elevation endpoint.
      properties:
        id:
          type:
          - string
          - 'null'
          description: An identifier to disambiguate requests (echoed by the server).
          example: kesklinn
        shape:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/Coordinate'
          description: |-
            The path to get the height along, expressed as a sequence of coordinates.

            REQUIRED if `encoded_polyline` is not present.
        encoded_polyline:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/EncodedPolyline'
            description: |-
              An [encoded polyline string](https://developers.google.com/maps/documentation/utilities/polylinealgorithm).

              REQUIRED if `shape` is not present.
        shape_format:
          $ref: '#/components/schemas/ShapeFormat'
          description: Specifies whether the polyline is encoded with 6 digit precision (polyline6) or 5 digit precision (polyline5).
        range:
          type: boolean
          description: |-
            Controls whether the returned array is one-dimensional (height only) or two-dimensional (with a range and height).
            The range dimension can be used to generate a graph or steepness gradient along a route.
        height_precision:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/HeightPrecision'
            description: The decimal precision (number of digits after the point) of the output.
        resample_distance:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/ResampleDistance'
            description: |-
              The distance at which the input polyline should be sampled to provide uniform distances between points.
              If not set, the input shape will be used as-is.
      example:
        height_precision: 0
        id: kesklinn
        range: false
        shape:
        - lat: 59.436884
          lon: 24.742595
        shape_format: polyline6
    highwayClassification:
      type: object
      properties:
        internal:
          type: boolean
          description: Is the edge internal to an intersection?
        link:
          type: boolean
          description: Is the edge a ramp or turn channel?
        surface:
          type: string
          description: A representation of the smoothness of the highway. This is used for costing and access checks based on the vehicle type.
          enum:
          - paved_smooth
          - paved
          - paved_rough
          - compacted
          - dirt
          - gravel
          - path
          - impassable
        use:
          type: string
          enum:
          - road
          - ramp
          - turn_channel
          - track
          - driveway
          - alley
          - parking_aisle
          - emergency_access
          - drive_through
          - culdesac
          - living_street
          - service_road
          - cycleway
          - mountain_bike
          - sidewalk
          - footway
          - elevator
          - steps
          - escalator
          - path
          - pedestrian
          - bridleway
          - pedestrian_crossing
          - rest_area
          - service_area
          - other
          - rail
          - ferry
          - rail-ferry
          - bus
          - egress_connection
          - platform_connection
          - transit_connection
          - construction
        classification:
          type: string
          description: The classification/importance of the road/path. Used for a variety of purposes including fallback speed estimation and access for certain vehicle types.
          enum:
          - motorway
          - trunk
          - primary
          - secondary
          - tertiary
          - unclassified
          - residential
          - service_other
    intersectingEdge:
      type: object
      properties:
        begin_heading:
          type: integer
          description: The direction at the beginning of an edge. The units are degrees clockwise from north.
        from_edge_name_consistency:
          type: boolean
          description: True if this intersecting edge at the end node has consistent names with the path from the other edge.
        to_edge_name_consistency:
          type: boolean
          description: True if this intersecting edge at the end node has consistent names with the path to the other edge.
        driveability:
          $ref: '#/components/schemas/traversability'
        cyclability:
          $ref: '#/components/schemas/traversability'
        walkability:
          $ref: '#/components/schemas/traversability'
        use:
          $ref: '#/components/schemas/edgeUse'
        road_class:
          $ref: '#/components/schemas/roadClass'
    isochroneCostingModel:
      type: string
      enum:
      - auto
      - auto_traffic
      - auto_traffic_premium
      - bus
      - bus_traffic
      - bus_traffic_premium
      - taxi
      - taxi_traffic
      - taxi_traffic_premium
      - truck
      - truck_traffic
      - truck_traffic_premium
      - bicycle
      - bikeshare
      - motor_scooter
      - motorcycle
      - pedestrian
      - low_speed_vehicle
    isochroneFeature:
      type: object
      properties:
        properties:
          $ref: '#/components/schemas/isochroneProperties'
        geometry:
          type: object
          additionalProperties: true
        type:
          type: string
          enum:
          - Feature
    isochroneProperties:
      type: object
      properties:
        fillColor:
          type: string
        opacity:
          type: number
          format: float
        fill:
          type: string
        fillOpacity:
          type: number
          format: float
        color:
          type: string
        contour:
          type: number
          format: float
        metric:
          type: string
          enum:
          - time
          - distance
    isochroneRequest:
      type: object
      required:
      - locations
      - contours
      - costing
      properties:
        id:
          $ref: '#/components/schemas/requestId'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/coordinate'
          maxItems: 1
          minItems: 1
        costing:
          $ref: '#/components/schemas/isochroneCostingModel'
        costing_options:
          $ref: '#/components/schemas/costingOptions'
        date_time:
          $ref: '#/components/schemas/timeConstraintV1'
        contours:
          type: array
          items:
            $ref: '#/components/schemas/contour'
          maxItems: 4
          minItems: 1
        polygons:
          type: boolean
          description: If true, the generated GeoJSON will use polygons. The default is to use LineStrings. Polygon output makes it easier to render overlapping areas in some visualization tools (such as MapLibre renderers).
          default: false
        denoise:
          type: number
          format: double
          description: A value in the range [0, 1] which will be used to smooth out or remove smaller contours. A value of 1 will only return the largest contour for a given time value. A value of 0.5 drops any contours that are less than half the area of the largest contour in the set of contours for that same time value.
          default: 1
          maximum: 1
          minimum: 0
        generalize:
          type: number
          format: double
          description: The value in meters to be used as a tolerance for Douglas-Peucker generalization.
          default: 200.0
        show_locations:
          type: boolean
          description: 'If true, then the output GeoJSON will include the input locations as two MultiPoint features: one for the exact input coordinates, and a second for the route network node location that the point was snapped to.'
          default: false
      example:
        contours:
        - color: aabbcc
          time: 5
        costing: pedestrian
        id: kesklinn
        locations:
        - lat: 59.436884
          lon: 24.742595
        polygons: true
    isochroneResponse:
      type: object
      required:
      - features
      - type
      properties:
        id:
          type: string
        features:
          type: array
          items:
            $ref: '#/components/schemas/isochroneFeature'
        type:
          type: string
          enum:
          - FeatureCollection
      example:
        features:
        - geometry:
            coordinates:
            - - -73.985021
              - 40.753501
            - - -73.983892
              - 40.75163
            - - -73.982508
              - 40.751546
            - - -73.981969
              - 40.751014
            - - -73.977881
              - 40.739014
            - - -73.979577
              - 40.738083
            - - -73.980361
              - 40.737014
            - - -73.988508
              - 40.73467
            - - -73.990508
              - 40.733708
            - - -73.991514
              - 40.734008
            - - -73.994628
              - 40.733894
            - - -73.995388
              - 40.734134
            - - -73.995662
              - 40.73486
            - - -73.996508
              - 40.735006
            - - -73.998508
              - 40.734576
            - - -74.003292
              - 40.746014
            - - -74.004016
              - 40.749014
            - - -74.002508
              - 40.749907
            - - -73.993508
              - 40.751786
            - - -73.987508
              - 40.75397
            - - -73.985021
              - 40.753501
            type: LineString
          properties:
            color: '#ff0000'
            contour: 15
            fill: '#ff0000'
            fill-opacity: 0.33
            fillColor: '#ff0000'
            fillOpacity: 0.33
            metric: time
            opacity: 0.33
          type: Feature
        type: FeatureCollection
    limit:
      type: integer
      description: The maximum number of results to return.
    locateDetailedEdge:
      type: object
      properties:
        sidewalk_left:
          type: boolean
          description: Is there a sidewalk to the left of the edge?
        sidewalk_right:
          type: boolean
          description: Is there a sidewalk to the right of the edge?
        lane_count:
          type: integer
        stop_sign:
          type: boolean
          description: Is there a stop sign at end of the directed edge?
        sac_scale:
          type: string
          enum:
          - none
          - hiking
          - mountain hiking
          - demanding mountain hiking
          - alpine hiking
          - demanding alpine hiking
          - difficult alpine hiking
        yield_sign:
          type: boolean
          description: Is there a yield sign at end of the directed edge?
        not_thru:
          type: boolean
          description: Does the edge lead to a "no-through" region?
        forward:
          type: boolean
          description: Is the edge info forward? If false, then reverse is implied.
        end_node:
          $ref: '#/components/schemas/nodeId'
        truck_route:
          type: boolean
          description: Is the edge part of a truck route/network?
        speeds:
          $ref: '#/components/schemas/speeds'
        bike_network:
          type: boolean
          description: Is the edge part of a bicycle network?
        round_about:
          type: boolean
          description: Is the edge part of a roundabout?
        traffic_signal:
          type: boolean
          description: Is there a traffic signal at the end of the directed edge?
        access_restriction:
          type: boolean
          description: Is there a general restriction or access condition?
        destination_only:
          type: boolean
          description: Is the edge destination only? If so, it will not be routed through.
        geo_attributes:
          $ref: '#/components/schemas/geoAttributes'
        start_restriction:
          $ref: '#/components/schemas/restrictions'
        cycle_lane:
          type: string
          description: Indication of the type of cycle lane (if any) present along an edge.
          enum:
          - none
          - shared
          - dedicated
          - separated
        end_restriction:
          $ref: '#/components/schemas/restrictions'
        seasonal:
          type: boolean
          description: Is access seasonal (ex. no access in winter)?
        country_crossing:
          type: boolean
          description: Does the edge cross into a new country?
        part_of_complex_restriction:
          type: boolean
          description: Is the edge part of a complex restriction?
        has_sign:
          type: boolean
          description: Do exit signs exist for the edge?
        access:
          $ref: '#/components/schemas/restrictions'
        bridge:
          type: boolean
          description: Is the edge part of a bridge?
        classification:
          $ref: '#/components/schemas/highwayClassification'
        toll:
          type: boolean
          description: Is the edge a toll road?
        tunnel:
          type: boolean
          description: Is the edge a tunnel?
    locateEdge:
      type: object
      required:
      - correlated_lat
      - correlated_lon
      - side_of_street
      - percent_along
      properties:
        edge_id:
          $ref: '#/components/schemas/nodeId'
        way_id:
          type: integer
          description: The OSM way ID associated with this edge (absent in verbose response; see the edge info).
        correlated_lat:
          type: number
          format: double
        correlated_lon:
          type: number
          format: double
        percent_along:
          type: number
          format: double
        side_of_street:
          type: string
          enum:
          - left
          - right
          - neither
        linear_reference:
          type: string
          description: A base64-encoded [OpenLR location reference](https://www.openlr-association.com/fileadmin/user_upload/openlr-whitepaper_v1.5.pdf), for a graph edge of the road network matched by the query.
        outbound_reach:
          type: integer
        heading:
          type: number
          format: float
        inbound_reach:
          type: integer
        distance:
          type: number
          format: float
        predicted_speeds:
          type: array
          items:
            type: integer
          description: Predicted speed information based on historical data. If available, this will include 2016 entries. Each entry represents 5 minutes, where the first entry represents midnight on Monday, the second entry represents 00:05 on Monday, etc.
        edge_info:
          $ref: '#/components/schemas/locateEdgeInfo'
        edge:
          $ref: '#/components/schemas/locateDetailedEdge'
        warnings:
          type: array
          items:
            type: string
    locateEdgeInfo:
      type: object
      required:
      - way_id
      - shape
      properties:
        mean_elevation:
          type: number
          format: float
          description: The mean elevation, in meters, relative to sea level.
        shape:
          type: string
          description: An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm). Note that the polyline is always encoded with 6 digits of precision, whereas most implementations default to 5.
        names:
          type: array
          items:
            type: string
          description: A list of names that the edge goes by.
        bike_network:
          $ref: '#/components/schemas/bikeNetwork'
        way_id:
          type: integer
          description: The OSM way ID associated with this edge.
    locateNode:
      allOf:
      - $ref: '#/components/schemas/coordinate'
      - type: object
        properties:
          traffic_signal:
            type: boolean
          type:
            $ref: '#/components/schemas/nodeType'
          node_id:
            $ref: '#/components/schemas/nodeId'
          access:
            $ref: '#/components/schemas/access'
          edge_count:
            type: integer
          administrative:
            $ref: '#/components/schemas/administrative'
          intersection_type:
            type: string
            enum:
            - regular
            - 'false'
            - dead-end
            - fork
          density:
            type: integer
          local_edge_count:
            type: integer
          mode_change:
            type: boolean
    locateObject:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/requestId'
        input_lat:
          type: number
          format: double
          description: The input (searched) latitude.
        input_lon:
          type: number
          format: double
          description: The input (searched) longitude.
        nodes:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/locateNode'
        edges:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/locateEdge'
    lowSpeedVehicleCostingOptions:
      allOf:
      - $ref: '#/components/schemas/baseCostingOptions'
      - type: object
        properties:
          vehicle_type:
            type: string
            description: |-
              The type of vehicle:
              * low_speed_vehicle (BETA): a low-speed vehicle which falls under a different regulatory and licensing regime than automobiles (ex: LSV in the US and Canada, Quadricycles in the EU, etc.) * golf_cart: a street legal golf cart that is under a similar regulator regime as the generic LSV laws, but may need to follow special paths when available or abide by restrictions specific to golf carts.
            default: low_speed_vehicle
            enum:
            - low_speed_vehicle
            - golf_cart
          top_speed:
            type: integer
            description: |-
              The top speed (in kph) that the vehicle is capable of travelling.
              This impacts travel time calculations as well as which roads are preferred. A very low speed vehicle will tend to prefer lower speed roads even in the presence of other legal routes.
            default: 35
            maximum: 60
            minimum: 20
          max_allowed_speed_limit:
            type: integer
            description: The maximum speed limit for highways on which it is legal for the vehicle to travel. Defaults to 57 (kph; around 35 mph). Acceptable values range from 20 to 80. Highways with *tagged* speed limits higher than this value will not be routed over (some caveats apply; this feature is still BETA).
            default: 57
            maximum: 80
            minimum: 20
    maneuverSign:
      type: object
      properties:
        exit_number_elements:
          type: array
          items:
            $ref: '#/components/schemas/maneuverSignElement'
          description: A list of exit number elements. This is typically just a single value.
        exit_branch_elements:
          type: array
          items:
            $ref: '#/components/schemas/maneuverSignElement'
          description: A list of exit branch elements. The text is a subsequent road name or route number after the sign.
        exit_toward_elements:
          type: array
          items:
            $ref: '#/components/schemas/maneuverSignElement'
          description: A list of exit name elements. The text is the interchange identifier (used more frequently outside the US).
        exit_name_elements:
          type: array
          items:
            $ref: '#/components/schemas/maneuverSignElement'
          description: A list of exit name elements. The text is the location where the road ahead goes (typically a city, but occasionally a road name or route number).
    maneuverSignElement:
      type: object
      required:
      - text
      properties:
        text:
          type: string
          description: The interchange sign text (varies based on the context; see the `maneuverSign` schema).
        is_route_number:
          type: boolean
          description: True if the sign is a route number.
        consecutive_count:
          type: integer
          description: The frequency of this sign element within a set a consecutive signs.
    mapMatchCostingModel:
      type: string
      enum:
      - auto
      - auto_traffic
      - auto_traffic_premium
      - bus
      - bus_traffic
      - bus_traffic_premium
      - taxi
      - taxi_traffic
      - taxi_traffic_premium
      - truck
      - truck_traffic
      - truck_traffic_premium
      - bicycle
      - bikeshare
      - motor_scooter
      - motorcycle
      - pedestrian
      - low_speed_vehicle
    mapMatchRequest:
      allOf:
      - $ref: '#/components/schemas/baseTraceRequest'
      - $ref: '#/components/schemas/directionsOptions'
      - $ref: '#/components/schemas/extendedDirectionsOptions'
      - type: object
        properties:
          begin_time:
            type: integer
            description: The timestamp at the start of the trace. Combined with `durations`, this provides a way to include timing information for an `encoded_polyline` trace.
          durations:
            type: integer
            description: A list of durations (in seconds) between each successive pair of points in a polyline.
          use_timestamps:
            type: boolean
            description: If true, the input timestamps or durations should be used when computing elapsed time for each edge along the matched path rather than the routing algorithm estimates.
            default: false
          trace_options:
            $ref: '#/components/schemas/mapMatchTraceOptions'
          linear_references:
            type: boolean
            description: If true, the response will include a `linear_references` value that contains an array of base64-encoded [OpenLR location references](https://www.openlr-association.com/fileadmin/user_upload/openlr-whitepaper_v1.5.pdf), one for each graph edge of the road network matched by the trace.
            default: false
          elevation_interval:
            $ref: '#/components/schemas/elevation_interval'
      example:
        costing: pedestrian
        encoded_polyline: _grbgAh~{nhF?lBAzBFvBHxBEtBKdB?fB@dBZdBb@hBh@jBb@x@\|@x@pB\x@v@hBl@nBPbCXtBn@|@z@ZbAEbAa@~@q@z@QhA]pAUpAVhAPlAWtASpAAdA[dASdAQhAIlARjANnAZhAf@n@`A?lB^nCRbA\xB`@vBf@tBTbCFbARzBZvBThBRnBNrBP`CHbCF`CNdCb@vBX`ARlAJfADhA@dAFdAP`AR`Ah@hBd@bBl@rBV|B?vB]tBCvBBhAF`CFnBXtAVxAVpAVtAb@|AZ`Bd@~BJfA@fAHdADhADhABjAGzAInAAjAB|BNbCR|BTjBZtB`@lBh@lB\|Bl@rBXtBN`Al@g@t@?nAA~AKvACvAAlAMdAU`Ac@hAShAI`AJ`AIdAi@bAu@|@k@p@]p@a@bAc@z@g@~@Ot@Bz@f@X`BFtBXdCLbAf@zBh@fBb@xAb@nATjAKjAW`BI|AEpAHjAPdAAfAGdAFjAv@p@XlAVnA?~A?jAInAPtAVxAXnAf@tBDpBJpBXhBJfBDpAZ|Ax@pAz@h@~@lA|@bAnAd@hAj@tAR~AKxAc@xAShA]hAIdAAjA]~A[v@BhB?dBSv@Ct@CvAI~@Oz@Pv@dAz@lAj@~A^`B^|AXvAVpAXdBh@~Ap@fCh@hB\zBN`Aj@xBFdA@jALbAPbAJdAHdAJbAHbAHfAJhALbA\lBTvBAdC@bC@jCKjASbC?`CM`CDpB\xAj@tB\fA\bAVfAJdAJbAXz@L|BO`AOdCDdA@~B\z@l@v@l@v@l@r@j@t@b@x@b@r@z@jBVfCJdAJdANbCPfCF|BRhBS~BS`AYbAe@~BQdA
        linear_references: true
        shape_match: map_snap
        units: miles
    mapMatchRouteResponse:
      allOf:
      - $ref: '#/components/schemas/routeResponse'
      - type: object
        properties:
          linear_references:
            type: array
            items:
              type: string
              description: A base64-encoded [OpenLR location reference](https://www.openlr-association.com/fileadmin/user_upload/openlr-whitepaper_v1.5.pdf), for a graph edge of the road network matched by the trace.
      example:
        trip:
          language: en-US
          legs:
          - maneuvers:
            - begin_shape_index: 0
              cost: 44.733
              end_shape_index: 1
              instruction: Walk west on the walkway.
              length: 0.039
              time: 44.733
              travel_mode: pedestrian
              travel_type: foot
              type: 1
              verbal_post_transition_instruction: Continue for 200 feet.
              verbal_pre_transition_instruction: Walk west on the walkway.
            - begin_shape_index: 1
              cost: 4.941
              end_shape_index: 2
              instruction: Turn left.
              length: 0.004
              time: 4.941
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 20 feet.
              verbal_pre_transition_instruction: Turn left. Then Turn right onto Jefferson Street.
              verbal_transition_alert_instruction: Turn left.
            - begin_shape_index: 2
              cost: 21.941
              end_shape_index: 3
              instruction: Turn right onto Jefferson Street.
              length: 0.014
              street_names:
              - Jefferson Street
              time: 16.941
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_post_transition_instruction: Continue for 80 feet.
              verbal_pre_transition_instruction: Turn right onto Jefferson Street.
              verbal_transition_alert_instruction: Turn right onto Jefferson Street.
            - begin_shape_index: 3
              cost: 9.941
              end_shape_index: 4
              instruction: Turn left onto the walkway.
              length: 0.004
              time: 4.941
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 20 feet.
              verbal_pre_transition_instruction: Turn left onto the walkway. Then Turn right onto the walkway.
              verbal_transition_alert_instruction: Turn left onto the walkway.
            - begin_shape_index: 4
              cost: 6.352
              end_shape_index: 5
              instruction: Turn right onto the walkway.
              length: 0.005
              time: 6.352
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 30 feet.
              verbal_pre_transition_instruction: Turn right onto the walkway. Then Turn left onto Hyde Street.
              verbal_transition_alert_instruction: Turn right onto the walkway.
            - begin_shape_index: 5
              cost: 63.588
              end_shape_index: 10
              instruction: Turn left onto Hyde Street.
              length: 0.051
              street_names:
              - Hyde Street
              time: 58.588
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_post_transition_instruction: Continue for 300 feet.
              verbal_pre_transition_instruction: Turn left onto Hyde Street.
              verbal_transition_alert_instruction: Turn left onto Hyde Street.
            - begin_shape_index: 10
              cost: 11.352
              end_shape_index: 11
              instruction: Turn right onto the walkway.
              length: 0.005
              rough: true
              time: 6.352
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 30 feet.
              verbal_pre_transition_instruction: Turn right onto the walkway. Then Turn left onto the walkway.
              verbal_transition_alert_instruction: Turn right onto the walkway.
            - begin_shape_index: 11
              cost: 93.176
              end_shape_index: 17
              instruction: Turn left onto the walkway.
              length: 0.082
              rough: true
              time: 93.176
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_post_transition_instruction: Continue for 400 feet.
              verbal_pre_transition_instruction: Turn left onto the walkway.
              verbal_transition_alert_instruction: Turn left onto the walkway.
            - begin_shape_index: 17
              cost: 7.764
              end_shape_index: 18
              instruction: Turn left onto the walkway.
              length: 0.006
              rough: true
              time: 7.764
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 40 feet.
              verbal_pre_transition_instruction: Turn left onto the walkway. Then Turn right onto Beach Street.
              verbal_transition_alert_instruction: Turn left onto the walkway.
            - begin_shape_index: 18
              cost: 115.705
              end_shape_index: 24
              instruction: Turn right onto Beach Street.
              length: 0.095
              street_names:
              - Beach Street
              time: 110.705
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_post_transition_instruction: Continue for 500 feet.
              verbal_pre_transition_instruction: Turn right onto Beach Street.
              verbal_transition_alert_instruction: Turn right onto Beach Street.
            - begin_shape_index: 24
              cost: 73.058
              end_shape_index: 27
              instruction: Turn left onto Polk Street.
              length: 0.059
              street_names:
              - Polk Street
              time: 68.058
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_post_transition_instruction: Continue for 300 feet.
              verbal_pre_transition_instruction: Turn left onto Polk Street.
              verbal_transition_alert_instruction: Turn left onto Polk Street.
            - begin_shape_index: 27
              cost: 103.0
              end_shape_index: 32
              instruction: Turn right onto the walkway.
              length: 0.084
              rough: true
              time: 98.0
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_post_transition_instruction: Continue for 400 feet.
              verbal_pre_transition_instruction: Turn right onto the walkway.
              verbal_transition_alert_instruction: Turn right onto the walkway.
            - begin_shape_index: 32
              cost: 98.294
              end_shape_index: 38
              instruction: Turn left onto Van Ness Avenue.
              length: 0.073
              street_names:
              - Van Ness Avenue
              time: 83.294
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_post_transition_instruction: Continue for 400 feet.
              verbal_pre_transition_instruction: Turn left onto Van Ness Avenue.
              verbal_transition_alert_instruction: Turn left onto Van Ness Avenue.
            - begin_shape_index: 38
              cost: 12.058
              end_shape_index: 39
              instruction: Turn right onto the walkway.
              length: 0.006
              rough: true
              time: 7.058
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 30 feet.
              verbal_pre_transition_instruction: Turn right onto the walkway. Then Turn left onto the walkway.
              verbal_transition_alert_instruction: Turn right onto the walkway.
            - begin_shape_index: 39
              cost: 9.882
              end_shape_index: 40
              instruction: Turn left onto the walkway.
              length: 0.008
              rough: true
              time: 9.882
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 50 feet.
              verbal_pre_transition_instruction: Turn left onto the walkway. Then Turn right onto Bay Street.
              verbal_transition_alert_instruction: Turn left onto the walkway.
            - begin_shape_index: 40
              cost: 199.823
              end_shape_index: 45
              instruction: Turn right onto Bay Street.
              length: 0.171
              street_names:
              - Bay Street
              time: 194.823
              travel_mode: pedestrian
              travel_type: foot
              type: 10
              verbal_post_transition_instruction: Continue for 900 feet.
              verbal_pre_transition_instruction: Turn right onto Bay Street.
              verbal_transition_alert_instruction: Turn right onto Bay Street.
            - begin_shape_index: 45
              cost: 8.302
              end_shape_index: 46
              instruction: Turn left onto Gough Street.
              length: 0.002
              street_names:
              - Gough Street
              time: 3.302
              travel_mode: pedestrian
              travel_type: foot
              type: 15
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 20 feet.
              verbal_pre_transition_instruction: Turn left onto Gough Street. Then You will arrive at your destination.
              verbal_transition_alert_instruction: Turn left onto Gough Street.
            - begin_shape_index: 46
              cost: 0.0
              end_shape_index: 46
              instruction: You have arrived at your destination.
              length: 0.0
              time: 0.0
              travel_mode: pedestrian
              travel_type: foot
              type: 4
              verbal_pre_transition_instruction: You have arrived at your destination.
              verbal_transition_alert_instruction: You will arrive at your destination.
            shape: uhrbgAt~{nhFrDhk@rBWfAbPvBWXfElAQhAi@dA]d[oDvIaAs@~Dp@n@r@r@^\jAnQfDdh@lBtY`Eg@VzDXxDxAdPrD~j@zBf]TpD|C_@`\uD|QaCZtE`Cp\|A|UdCz^N`ClDJj@dJdDo@vGw@dKmAzWcDRdFpFq@d@dHpH`kAVbEXhEdKj_BpAO
            summary:
              cost: 883.918
              has_time_restrictions: false
              length: 0.716
              max_lat: 37.807771
              max_lon: -122.419706
              min_lat: 37.803694
              min_lon: -122.428418
              time: 818.918
          linear_references:
          - C6jyLBrisjr3Af+4//g6BA==
          - C6jyCxrirjr3AAAA//s6Bw==
          - C6jyDBriqyKUAP/j//0iAg==
          - C6jx/xriqTr3AAAA//w6Ag==
          - C6jx/xripjr0AP/2AAE6Hg==
          - C6jx+xripiKUAQAM/8kiHw==
          - C6jyARrijCKPAAAC/+8iBg==
          - C6jyAxrihDrvAP/0AAM6BQ==
          - C6jx/hrihTrzAP/5//o6Bw==
          - C6jx+xrigjr1AP/h//06Bw==
          - C6jx7RrigDr3Af++//k6Bw==
          - C6jxzxrifDr3AP/T//w6Ag==
          - C6jxuxrieTr3AAAA//g6Bw==
          - C6jxvBridTLSAP/1AAAyBw==
          - C6jxtxridDLSAP/2AAEyBg==
          - C6jxsxridDLWAf+d//MyBw==
          - C6jxhRribjLXAP/P//oyAg==
          - C6jxbxriazLXAP/1//8yHw==
          - C6jxaxriajLXAP////kyHw==
          - C6jxaxriZjLTAAAJ/9MyHw==
          - C6jxbxriUTLPAAAG/+IyBw==
          - C6jxcxriQzrvAP/z//86Bw==
          - C6jxbhriQjryAP/P//s6Bw==
          - C6jxVxriPzr3AP/b//w6Bw==
          - C6jxRhriPTr3AP/N//o6Aw==
          - C6jxLxriOjr3AP/4AAA6Aw==
          - C6jxLBriOTLXAP/9//kyBQ==
          - C6jxKxriNSKTAP/u//8iHw==
          - C6jxIxriNCKWAAAE/+siHw==
          - C6jxJRriKiKPAAAE/+0iHw==
          - C6jxJxriISKPAAAI/9kiAw==
          - C6jxKxriDjrvAP/0AAA6AQ==
          - C6jxJhriDjrzAAAB//Q6Bw==
          - C6jxJxriCBpxAv9s/+8aBw==
          - C6jw4xrh/xp3Av9a/+0aBQ==
          - C6jwlhrh9jLXAAAA//0yBQ==
          locations:
          - lat: 37.807744
            lon: -122.4197
            type: break
          - lat: 37.803694
            lon: -122.428416
            type: break
          status: 0
          status_message: Found route between points
          summary:
            cost: 883.918
            has_time_restrictions: false
            length: 0.716
            max_lat: 37.807771
            max_lon: -122.419706
            min_lat: 37.803694
            min_lon: -122.428418
            time: 818.918
          units: miles
    mapMatchTraceOptions:
      type: object
      properties:
        search_radius:
          type: integer
          description: The search radius, in meters, when trying to match each trace point.
        gps_accuracy:
          type: number
          format: double
          description: The accuracy of the GPS, in meters.
        breakage_distance:
          type: number
          format: double
          description: The breaking distance, in meters, between trace points.
        interpolation_distance:
          type: number
          format: double
          description: The interpolation distance, in meters, beyond which trace points are merged together.
        turn_penalty_factor:
          type: integer
          description: Penalizes turns from one road segment to next. For a pedestrian trace, you may see a back-and-forth motion along the streets of your path with the default settings. Try increasing the turn penalty factor to 500 to reduce jitter in the output. Note that if GPS accuracy is already good, increasing this above the default will usually negatively affect the quality of map matching.
    mapMatchWaypoint:
      allOf:
      - $ref: '#/components/schemas/simpleRoutingWaypoint'
      - type: object
        properties:
          time:
            type: integer
            description: The timestamp of the waypoint, in seconds. This can inform the map matching algorithm about when the point was measured. A UNIX timestamp, or any increasing integer sequence measuring seconds from some reference point can be used.
    matchedPoint:
      type: object
      required:
      - lat
      - lon
      - type
      properties:
        lat:
          type: number
          format: double
          description: The latitude of the matched point.
        lon:
          type: number
          format: double
          description: The longitude of the matched point.
        type:
          type: string
          enum:
          - unmatched
          - interpolated
          - matched
        edge_index:
          type: integer
          description: The index of the edge in the list of `edges`. This key will be missing if the point is unmatched.
        begin_route_discontinuity:
          type: boolean
          description: If true, this match result is the begin location of a route discontinuity.
          default: false
        end_route_discontinuity:
          type: boolean
          description: If true, this match result is the end location of a route discontinuity.
          default: false
        distance_along_edge:
          type: number
          format: double
          description: The distance along the associated edge for this matched point, expressed as a value between 0 and 1. For example, if the matched point is halfway along the edge, then the value will be 0.5. This key will be absent if the point is unmatched.
        distance_from_trace_point:
          type: number
          format: double
          description: The distance in meters from the trace point to the matched point. This key will be absent if the point is unmatched.
    matrixCostingModel:
      type: string
      enum:
      - auto
      - auto_traffic
      - auto_traffic_premium
      - bus
      - bus_traffic
      - bus_traffic_premium
      - taxi
      - taxi_traffic
      - taxi_traffic_premium
      - truck
      - truck_traffic
      - truck_traffic_premium
      - bicycle
      - bikeshare
      - motor_scooter
      - motorcycle
      - pedestrian
      - low_speed_vehicle
    matrixDistance:
      type: object
      required:
      - distance
      - time
      - from_index
      - to_index
      properties:
        distance:
          type:
          - number
          - 'null'
          format: double
          description: |-
            The distance (in `units`) between the location in `sources` at `from_index` and the location in `targets` at `to_index`.
            This value may be 0 in the case that the source and destination are the same, and `null` if no route was found between the locations.
        time:
          type:
          - integer
          - 'null'
          description: |-
            The travel time (in seconds) between the location in `sources` at `from_index` and the location in `targets` at `to_index`.
            This value may be 0 in the case that the source and destination are the same, and `null` if no route was found between the locations.
        from_index:
          type: integer
          description: The index of the start location in the `sources` array.
        to_index:
          type: integer
          description: The index of the end location in the `targets` array.
    matrixRequest:
      allOf:
      - type: object
        required:
        - sources
        - targets
        - costing
        properties:
          id:
            $ref: '#/components/schemas/requestId'
          sources:
            type: array
            items:
              $ref: '#/components/schemas/matrixWaypoint'
            description: The list of starting locations
            minItems: 1
          targets:
            type: array
            items:
              $ref: '#/components/schemas/matrixWaypoint'
            description: The list of ending locations
            minItems: 1
          costing:
            $ref: '#/components/schemas/matrixCostingModel'
          costing_options:
            $ref: '#/components/schemas/costingOptions'
          date_time:
            allOf:
            - $ref: '#/components/schemas/timeConstraintV1'
            description: Time-dependent routing constraint applied globally. Cannot be combined with per-waypoint `date_time` on sources/targets.
          matrix_locations:
            type: integer
            description: Only applicable to one-to-many or many-to-one requests. This defaults to all locations. When specified explicitly, this option allows a partial result to be returned. This is basically equivalent to "find the closest/best locations out of the full set." This can have a dramatic improvement for large requests.
      - $ref: '#/components/schemas/directionsOptions'
      example:
        costing: pedestrian
        sources:
        - lat: 40.744014
          lon: -73.990508
        targets:
        - lat: 40.744014
          lon: -73.990508
        - lat: 40.739735
          lon: -73.979713
        - lat: 40.752522
          lon: -73.985015
        - lat: 40.750117
          lon: -73.983704
        - lat: 40.750552
          lon: -73.993519
    matrixResponse:
      type: object
      required:
      - sources
      - targets
      - sources_to_targets
      - units
      properties:
        id:
          $ref: '#/components/schemas/requestId'
        sources:
          type: array
          items:
            $ref: '#/components/schemas/coordinate'
          description: The list of starting locations determined by snapping to the nearest appropriate point on the road network for the routing profile. All locations appear in the same order as the input.
          minItems: 1
        targets:
          type: array
          items:
            $ref: '#/components/schemas/coordinate'
          description: The list of ending locations determined by snapping to the nearest appropriate point on the road network for the routing profile. All locations appear in the same order as the input.
          minItems: 1
        sources_to_targets:
          type: array
          items:
            type: array
            items:
              $ref: '#/components/schemas/matrixDistance'
          description: The matrix of starting and ending locations, along with the computed distance and travel time. The array is row-ordered. This means that the time and distance from the first location to all others forms the first row of the array, followed by the time and distance from the second source location to all target locations, etc.
          minItems: 1
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/warning'
        units:
          $ref: '#/components/schemas/routingLongUnits'
      example:
        sources:
        - - lat: 40.744014
            lon: -73.990508
        sources_to_targets:
        - - distance: 0.0
            from_index: 0
            time: 0
            to_index: 0
          - distance: 1.115
            from_index: 0
            time: 806
            to_index: 1
          - distance: 1.278
            from_index: 0
            time: 909
            to_index: 2
          - distance: 1.112
            from_index: 0
            time: 792
            to_index: 3
          - distance: 1.22
            from_index: 0
            time: 869
            to_index: 4
        targets:
        - - lat: 40.744014
            lon: -73.990508
          - lat: 40.739735
            lon: -73.979713
          - lat: 40.752522
            lon: -73.985015
          - lat: 40.750117
            lon: -73.983704
          - lat: 40.750552
            lon: -73.993519
        units: kilometers
    matrixWaypoint:
      allOf:
      - $ref: '#/components/schemas/coordinate'
      - type: object
        properties:
          search_cutoff:
            type: integer
            description: The cutoff (in meters) at which we will assume the input is too far away from civilisation to be worth correlating to the nearest graph elements. The default is 35 km.
          date_time:
            type: string
            description: Optional departure time for this specific waypoint in `YYYY-MM-DDTHH:MM` format. On matrix requests, per-waypoint date_time drives time-dependent routing behavior (e.g., accounting for traffic conditions at different times for different origins). Cannot be combined with a root-level `date_time`.
            example: 2025-07-03T08:06
    motorScooterCostingOptions:
      allOf:
      - $ref: '#/components/schemas/autoCostingOptions'
      - type: object
        properties:
          use_primary:
            type: number
            format: double
            description: A measure of willingness to use primary roads. Values near 0 attempt to avoid primary roads and stay on roads with lower speeds, and values near 1 indicate the rider is more comfortable on these roads.
            default: 0.5
            maximum: 1
            minimum: 0
          use_hills:
            type: number
            format: double
            description: A measure of willingness to take tackle hills. Values near 0 attempt to avoid hills and steeper grades even if it means a longer route, and values near 1 indicates that the rider does not fear them. Note that as some routes may be impossible without hills, 0 does not guarantee avoidance of them.
            default: 0.5
            maximum: 1
            minimum: 0
    motorcycleCostingOptions:
      allOf:
      - $ref: '#/components/schemas/autoCostingOptions'
      - type: object
        properties:
          use_highways:
            type: number
            format: double
            description: A measure of willingness to use highways. Values near 0 attempt to avoid highways and stay on roads with lower speeds, and values near 1 indicate the rider is more comfortable on these roads.
            default: 1.0
            maximum: 1
            minimum: 0
          use_trails:
            type: number
            format: double
            description: A measure of the rider's sense of adventure. Values near 0 attempt to avoid highways and stay on roads with potentially unsuitable terrain (trails, tracks, unclassified, or bad surfaces), and values near 1 will tend to avoid major roads and route on secondary roads.
            default: 0.0
            maximum: 1
            minimum: 0
    nearestRoadsCostingModel:
      type: string
      description: A routing profile that determines which roads are eligible for matching (e.g. trucks probably aren't on sidewalks, so the search will snap to the nearest truck-accessible road).
      enum:
      - auto
      - bus
      - taxi
      - truck
      - bicycle
      - bikeshare
      - motor_scooter
      - motorcycle
      - pedestrian
      - low_speed_vehicle
    nearestRoadsRequest:
      type: object
      required:
      - locations
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/coordinate'
          minItems: 1
        costing:
          $ref: '#/components/schemas/nearestRoadsCostingModel'
        costing_options:
          $ref: '#/components/schemas/costingOptions'
        verbose:
          type: boolean
          default: false
      example:
        locations:
        - lat: 59.436884
          lon: 24.742595
        verbose: true
    nearestRoadsResponse:
      type: array
      items:
        $ref: '#/components/schemas/locateObject'
      example:
      - edges:
        - correlated_lat: 59.436875
          correlated_lon: 24.74263
          distance: 2.2
          edge:
            access:
              HOV: true
              bicycle: true
              bus: true
              car: true
              emergency: false
              golf_cart: true
              moped: true
              motorcycle: true
              pedestrian: true
              taxi: true
              truck: true
              wheelchair: true
            access_restriction: false
            bike_network: false
            bridge: false
            classification:
              classification: service_other
              internal: false
              link: false
              surface: paved
              use: living_street
            country_crossing: false
            cycle_lane: none
            destination_only: false
            end_node:
              id: 2895
              level: 2
              tile_id: 860498
              value: 97146964626
            end_restriction:
              HOV: false
              bicycle: false
              bus: false
              car: false
              emergency: false
              moped: false
              motorcycle: false
              pedestrian: false
              taxi: false
              truck: false
              wheelchair: false
            forward: false
            geo_attributes:
              curvature: 5
              length: 32
              max_down_slope: -7.0
              max_up_slope: 0.0
              weighted_grade: -6.67
            has_sign: false
            lane_count: 1
            not_thru: false
            part_of_complex_restriction: false
            round_about: false
            seasonal: false
            sidewalk_left: false
            sidewalk_right: false
            speeds:
              constrained_flow: 0
              default: 20
              free_flow: 0
              predicted: false
              type: classified
            start_restriction:
              HOV: false
              bicycle: false
              bus: false
              car: false
              emergency: false
              moped: false
              motorcycle: false
              pedestrian: false
              taxi: false
              truck: false
              wheelchair: false
            toll: false
            traffic_signal: false
            truck_route: false
            tunnel: false
          edge_id:
            id: 1800
            level: 2
            tile_id: 860498
            value: 60404861586
          edge_info:
            bike_network:
              local: false
              mountain: false
              national: false
              regional: false
            mean_elevation: 36
            names:
            - Rataskaevu
            shape: '{zvjpBwtden@zG`H~EdG'
            speed_limit: 0
            way_id: 4853850
          inbound_reach: 50
          linear_reference: KxGYOypEIXriAAAcABo6Uow=
          live_speed: {}
          outbound_reach: 50
          percent_along: 0.54802
          predicted_speeds: []
          side_of_street: neither
        - correlated_lat: 59.436875
          correlated_lon: 24.74263
          distance: 2.2
          edge:
            access:
              HOV: true
              bicycle: true
              bus: true
              car: true
              emergency: false
              moped: true
              motorcycle: true
              pedestrian: true
              taxi: true
              truck: true
              wheelchair: true
            access_restriction: false
            bike_network: false
            bridge: false
            classification:
              classification: service_other
              internal: false
              link: false
              surface: paved
              use: living_street
            country_crossing: false
            cycle_lane: none
            destination_only: false
            end_node:
              id: 819
              level: 2
              tile_id: 860498
              value: 27487963794
            end_restriction:
              HOV: false
              bicycle: false
              bus: false
              car: false
              emergency: false
              moped: false
              motorcycle: false
              pedestrian: false
              taxi: false
              truck: false
              wheelchair: false
            forward: true
            geo_attributes:
              curvature: 5
              length: 32
              max_down_slope: 0.0
              max_up_slope: 7.0
              weighted_grade: 6.67
            has_sign: false
            lane_count: 1
            not_thru: false
            part_of_complex_restriction: false
            round_about: false
            seasonal: false
            sidewalk_left: false
            sidewalk_right: false
            speeds:
              constrained_flow: 0
              default: 20
              free_flow: 0
              predicted: false
              type: classified
            start_restriction:
              HOV: false
              bicycle: false
              bus: false
              car: false
              emergency: false
              moped: false
              motorcycle: false
              pedestrian: false
              taxi: false
              truck: false
              wheelchair: false
            toll: false
            traffic_signal: false
            truck_route: false
            tunnel: false
          edge_id:
            id: 7368
            level: 2
            tile_id: 860498
            value: 247235938962
          edge_info:
            bike_network:
              local: false
              mountain: false
              national: false
              regional: false
            mean_elevation: 36
            names:
            - Rataskaevu
            shape: '{zvjpBwtden@zG`H~EdG'
            speed_limit: 0
            way_id: 4853850
          inbound_reach: 50
          linear_reference: KxGYSCpELHryAP/l/+k6QnM=
          live_speed: {}
          outbound_reach: 50
          percent_along: 0.45198
          predicted_speeds: []
          side_of_street: neither
        input_lat: 59.436884
        input_lon: 24.742595
        nodes: []
    nodeId:
      type: object
      properties:
        id:
          type: integer
          format: int64
        value:
          type: integer
          format: int64
        tile_id:
          type: integer
          format: int64
        level:
          type: integer
    nodeType:
      type: string
      enum:
      - street_intersection
      - gate
      - bollard
      - toll_booth
      - multi_use_transit_stop
      - bike_share
      - parking
      - motor_way_junction
      - border_control
    optimizedRouteRequest:
      allOf:
      - type: object
        required:
        - locations
        - costing
        properties:
          id:
            $ref: '#/components/schemas/requestId'
          locations:
            type: array
            items:
              $ref: '#/components/schemas/coordinate'
            description: The list of locations. The first and last are assumed to be the start and end points, and all intermediate points are locations that you want to visit along the way.
            minItems: 3
          costing:
            $ref: '#/components/schemas/matrixCostingModel'
          costing_options:
            $ref: '#/components/schemas/costingOptions'
          date_time:
            $ref: '#/components/schemas/timeConstraintV1'
          elevation_interval:
            $ref: '#/components/schemas/elevation_interval'
      - $ref: '#/components/schemas/directionsOptions'
      - $ref: '#/components/schemas/extendedDirectionsOptions'
      example:
        costing: auto
        locations:
        - lat: 40.042072
          lon: -76.306572
        - lat: 39.992115
          lon: -76.781559
        - lat: 39.984519
          lon: -76.6956
        - lat: 39.996586
          lon: -76.769028
        - lat: 39.984322
          lon: -76.706672
        units: miles
    osrmAdmin:
      type: object
      properties:
        iso_3166_1:
          type: string
          description: The ISO 3166-1 two-character code for the admin region.
        iso_3166_1_alpha3:
          type: string
          description: The ISO 3166-1 three-character code for the admin region.
    osrmAnnotation:
      type: object
      properties:
        distance:
          type: array
          items:
            type: number
            format: double
          description: The distance, in meters, between each pair of coordinates.
        duration:
          type: array
          items:
            type: number
            format: double
          description: The duration between each pair of coordinates, in seconds.
        weight:
          type: array
          items:
            type: integer
        speed:
          type: array
          items:
            type: number
            format: double
          description: The estimated speed of travel between each pair of coordinates in meters/sec.
        maxspeed:
          type: array
          items:
            $ref: '#/components/schemas/osrmSpeedLimit'
    osrmBannerComponent:
      type: object
      properties:
        text:
          type: string
        type:
          type: string
          enum:
          - text
          - icon
          - delimiter
          - exit-number
          - exit
          - lane
    osrmBannerContent:
      type: object
      required:
      - text
      properties:
        text:
          type: string
        type:
          type: string
          enum:
          - turn
          - new name
          - depart
          - arrive
          - merge
          - on ramp
          - off ramp
          - fork
          - end of road
          - continue
          - roundabout
          - rotary
          - roundabout turn
          - notification
          - exit roundabout
          - exit rotary
        modifier:
          $ref: '#/components/schemas/osrmGuidanceModifier'
        components:
          type: array
          items:
            $ref: '#/components/schemas/osrmBannerComponent'
          description: A list of objects with additional context that allow for visual layout improvements beyond what's possible with plain text.
    osrmBannerInstruction:
      type: object
      required:
      - distanceAlongGeometry
      - primary
      properties:
        distanceAlongGeometry:
          type: number
          format: double
          description: How far (in meters) from the upcoming maneuver the instruction should start being displayed.
        primary:
          $ref: '#/components/schemas/osrmBannerContent'
        secondary:
          $ref: '#/components/schemas/osrmBannerContent'
    osrmBaseApiResponse:
      type: object
      required:
      - code
      properties:
        code:
          type: string
          enum:
          - Ok
          - InvalidUrl
          - InvalidService
          - InvalidVersion
          - InvalidOptions
          - InvalidQuery
          - InvalidValue
          - NoSegment
          - TooBig
          - NoRoute
          - NoTable
          - NotImplemented
          - NoTrips
        message:
          type: string
        data_version:
          type: string
    osrmCoordinate:
      type: array
      items:
        type: number
        format: double
      description: A (longitude, latitude) coordinate pair.
      maxItems: 2
      minItems: 2
    osrmGuidanceModifier:
      type:
      - string
      - 'null'
      description: An optional value indicating the directional change of the maneuver (further clarifying type).
      enum:
      - uturn
      - sharp right
      - right
      - slight right
      - straight
      - slight left
      - left
      - sharp left
    osrmIntersection:
      type: object
      description: Detailed information about intersections that the route traverses. For every step, the first intersection is at the location of the maneuver. Additional intersections will be provided for every road or path traversed until the next step.
      required:
      - location
      - bearings
      - entry
      properties:
        location:
          $ref: '#/components/schemas/osrmCoordinate'
        bearings:
          type: array
          items:
            type: integer
          description: A list of bearing values that are available for travel through the intersection.
        classes:
          type: array
          items:
            type: string
            description: The classes of roads exiting the intersection.
            enum:
            - toll
            - ferry
            - restricted
            - motorway
            - tunnel
        entry:
          type: array
          items:
            type: boolean
          description: A list of entry flags, which map 1:1 to the bearings. A value of true indicates that the respective road could be entered on a valid route. False indicates that the turn onto the respective road would violate a restriction.
        in:
          type: integer
          description: An index into bearings/entry array. Used to calculate the bearing just before the turn. Namely, the clockwise angle from true north to the direction of travel immediately before the maneuver/passing the intersection. Bearings are given relative to the intersection. To get the bearing in the direction of driving, the bearing has to be rotated by a value of 180. The value is not supplied for depart maneuvers.
        out:
          type: integer
          description: An index into bearings/entry array. Used to calculate the bearing just after the turn. Namely, the clockwise angle from true north to the direction of travel immediately after the maneuver/passing the intersection. This is not supplied for arrive maneuvers.
        lanes:
          type: array
          items:
            $ref: '#/components/schemas/osrmLane'
          description: Available turn lanes at the intersection. May be omitted if no lane information is available for the intersection.
        admin_index:
          type: integer
          description: The index into the admin boundaries list on the route leg.
        duration:
          type: number
          format: double
          description: The estimated duration, in seconds, to traverse the intersection.
        turn_duration:
          type: number
          format: double
          description: The estimated duration, in seconds, to complete the turn.
        turn_weight:
          type: number
          format: double
        geometry_index:
          type: integer
          description: The index of the intersection in the leg geometry.
        weight:
          type: number
          format: double
    osrmLane:
      type: object
      required:
      - indications
      - valid
      properties:
        indications:
          type: array
          items:
            type: string
            enum:
            - none
            - uturn
            - sharp right
            - right
            - slight right
            - straight
            - slight left
            - left
            - sharp left
          description: A list of indication (e.g. marking on the road) specifying the turn lane. A road can have multiple indications (e.g. an arrow pointing straight and left).
        valid:
          type: boolean
          description: True if the lane is a valid choice for the current maneuver.
    osrmRoute:
      type: object
      required:
      - distance
      - duration
      - geometry
      - legs
      properties:
        distance:
          type: number
          format: double
          description: The distance traveled by the route, in meters.
        duration:
          type: number
          format: double
          description: The estimated travel time, in number of seconds.
        geometry:
          type: string
          description: An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm). Note that the polyline is encoded with 6 digits of precision rather than the default 5!
        weight:
          type: number
          format: double
          description: The total cost of the route computed by the routing engine.
        weight_name:
          type: string
          description: The routing profile (costing) used for the route.
        legs:
          type: array
          items:
            $ref: '#/components/schemas/osrmRouteLeg'
    osrmRouteLeg:
      type: object
      required:
      - distance
      - duration
      - steps
      properties:
        distance:
          type: number
          format: double
          description: The distance traveled by the route, in meters.
        duration:
          type: number
          format: double
          description: The estimated travel time, in number of seconds.
        weight:
          type: number
          format: double
          description: The total cost of the leg computed by the routing engine.
        summary:
          type: string
        steps:
          type: array
          items:
            $ref: '#/components/schemas/osrmRouteStep'
        annotation:
          $ref: '#/components/schemas/osrmAnnotation'
        via_waypoints:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/osrmViaWaypoint'
          description: Indicates which waypoints are passed through rather than creating a new leg.
        admins:
          type: array
          items:
            $ref: '#/components/schemas/osrmAdmin'
          description: Administrative regions visited along the leg.
    osrmRouteResponse:
      allOf:
      - $ref: '#/components/schemas/osrmBaseApiResponse'
      - type: object
        properties:
          waypoints:
            type: array
            items:
              $ref: '#/components/schemas/osrmWaypoint'
          routes:
            type: array
            items:
              $ref: '#/components/schemas/osrmRoute'
    osrmRouteStep:
      type: object
      description: A maneuver such as a turn or merge, followed by travel along a single road or path.
      required:
      - distance
      - duration
      - geometry
      - mode
      - maneuver
      properties:
        distance:
          type: number
          format: double
          description: The distance traveled by the route, in meters.
        duration:
          type: number
          format: double
          description: The estimated travel time, in number of seconds.
        geometry:
          type: string
          description: 'An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm) with 6 digits of decimal precision (NOTE: most implementations default to 5).'
        weight:
          type: number
          format: double
        name:
          type: string
          description: 'The name of the segment (ex: road) being traversed'
        ref:
          type: string
          description: A reference number of code for the segment being traversed.
        pronunciation:
          type: string
          description: Pronunciation of the name (if available). The format of this varies by implementation/vendor.
        destinations:
          type: string
        exits:
          type: string
        mode:
          type: string
          description: The mode of travel.
        maneuver:
          $ref: '#/components/schemas/osrmStepManeuver'
        intersections:
          type: array
          items:
            $ref: '#/components/schemas/osrmIntersection'
        rotary_name:
          type: string
          description: The name of the traffic circle.
        rotary_pronunciation:
          type: string
          description: Pronunciation of the rotary name (if available). The format of this varies by implementation/vendor.
        driving_side:
          type: string
          description: The side of the road on which driving is legal for this step.
          enum:
          - left
          - right
        voiceInstructions:
          type: array
          items:
            $ref: '#/components/schemas/osrmVoiceInstruction'
          description: A list of announcements which should be spoken at various points along the maneuver.
        bannerInstructions:
          type: array
          items:
            $ref: '#/components/schemas/osrmBannerInstruction'
          description: A list of announcements which should be displayed prominently on screen at various points along the maneuver.
        speedLimitSign:
          type: string
          description: The style of speed limit signs used along the step.
          enum:
          - mutcd
          - vienna
        speedLimitUnit:
          type: string
          description: The unit of measure that is used locally along the step. This may be different from the unit used in maxspeed annotations, and is provided so that apps can localize their display.
    osrmSpeedLimit:
      type: object
      description: The speed limit between the pair of coordinates.
      properties:
        speed:
          type: integer
        unit:
          type: string
          description: The unit of measure for the speed. Always included if speed is present.
          enum:
          - km/h
          - mph
        unknown:
          type: boolean
          description: True if the speed limit is not known.
        none:
          type: boolean
          description: 'True if there is no explicit speed limit (ex: some Autobahn sections)'
    osrmStepManeuver:
      type: object
      required:
      - location
      - bearing_before
      - bearing_after
      - type
      properties:
        location:
          $ref: '#/components/schemas/osrmCoordinate'
        instruction:
          type: string
          description: A human-readable instruction for the maneuver.
        bearing_before:
          type: integer
          description: The clockwise angle from true north to the direction of travel immediately before the maneuver.
        bearing_after:
          type: integer
          description: The clockwise angle from true north to the direction of travel immediately after the maneuver.
        type:
          type: string
          enum:
          - turn
          - new name
          - depart
          - arrive
          - merge
          - ramp
          - on ramp
          - off ramp
          - fork
          - end of road
          - use lane
          - continue
          - roundabout
          - rotary
          - roundabout turn
          - notification
          - exit roundabout
          - exit rotary
        modifier:
          $ref: '#/components/schemas/osrmGuidanceModifier'
        exit:
          type: integer
          description: The exit number to take (for roundabouts, rotaries, and number of intersections).
    osrmViaWaypoint:
      type: object
      required:
      - distance_from_start
      - geometry_index
      - waypoint_index
      properties:
        distance_from_start:
          type: number
          format: double
          description: The distance from the start of the leg, in meters.
        geometry_index:
          type: integer
          description: The index of the waypoint's location in the route geometry.
        waypoint_index:
          type: integer
          description: The index of the associated waypoint.
    osrmVoiceInstruction:
      type: object
      required:
      - distanceAlongGeometry
      - announcement
      properties:
        distanceAlongGeometry:
          type: number
          format: double
          description: How far (in meters) from the upcoming maneuver the instruction should be announced.
        announcement:
          type: string
          description: The plain-text announcement.
        ssmlAnnouncement:
          type: string
          description: The announcement in Speech Synthesis Markup Language (SSML). Supported TTS engines include Amazon Polly and Apple's AVSpeechSynthesizer.
    osrmWaypoint:
      type: object
      required:
      - location
      - distance
      properties:
        name:
          type: string
        location:
          $ref: '#/components/schemas/osrmCoordinate'
        distance:
          type: number
          format: double
          description: The distance of the snapped point from the original location.
        hint:
          type: string
    pedestrianCostingOptions:
      type: object
      properties:
        walking_speed:
          type: number
          format: double
          description: Walking speed in kph.
          default: 5.1
          maximum: 25
          minimum: 0.5
        walkway_factor:
          type: number
          format: double
          description: A factor that multiplies the cost when walkways are encountered.
          default: 1
        sidewalk_factor:
          type: number
          format: double
          description: A factor that multiplies the cost when sidewalks are encountered.
          default: 1
        alley_factor:
          type: number
          format: double
          description: A factor that multiplies the cost when alleys are encountered.
          default: 2
        driveway_factor:
          type: number
          format: double
          description: A factor that multiplies the cost when driveways are encountered.
          default: 5
        step_penalty:
          type: integer
          description: A penalty (in seconds) added to each transition onto a path with steps or stairs.
          default: 30
        use_ferry:
          $ref: '#/components/schemas/useFerryCostingOption'
        use_living_streets:
          $ref: '#/components/schemas/useLivingStreetsCostingOption'
        use_tracks:
          $ref: '#/components/schemas/useTracksCostingOption'
        use_hills:
          $ref: '#/components/schemas/useHillsCostingOption'
        use_lit:
          type: number
          format: double
          description: A measure of preference for streets that are lit. 0 indicates indifference toward lit streets, and 1 indicates that unlit streets should be avoided. Note that even with values near 1, there is no guarantee that the returned route will include lit segments.
          default: 0
          maximum: 1
          minimum: 0
        service_penalty:
          $ref: '#/components/schemas/servicePenaltyCostingOption'
        service_factor:
          $ref: '#/components/schemas/serviceFactorCostingOption'
        max_hiking_difficulty:
          type: integer
          description: The maximum difficulty of hiking trails allowed. This corresponds to the OSM `sac_scale`.
          default: 1
          maximum: 6
          minimum: 1
        bss_rent_cost:
          type: integer
          description: The estimated cost (in seconds) to rent a bicycle from a sharing station in `bikeshare` mode.
          default: 120
        bss_rent_penalty:
          type: integer
          description: A penalty (in seconds) to rent a bicycle in `bikeshare` mode.
          default: 0
        type:
          $ref: '#/components/schemas/pedestrianType'
        max_distance:
          type: integer
          description: Maximum total walking distance (in meters). Defaults to 100,000 for foot, 10,000 for wheelchair.
          minimum: 0
        max_grade:
          type: integer
          description: Maximum grade (steepness) as a percentage. Defaults to 90 for foot, 12 for wheelchair.
          maximum: 90
          minimum: 0
        mode_factor:
          type: number
          format: double
          description: |-
            A factor that modifies the cost when transitioning between travel modes.
            Setting this value higher than 1 will avoid walking, while setting it lower than 1 will prefer walking.
          default: 1.5
        elevator_penalty:
          type: integer
          description: A penalty (in seconds) for using an elevator.
          default: 5
    pedestrianType:
      type: string
      description: If set to blind, enables additional route instructions which are helpful for blind users. These include announcing street crossings, stairs, bridges, tunnels, gates, and bollards passed on the route. If set to wheelchair, the walking speed and step penalty are adjusted for wheelchair users.
      enum:
      - foot
      - blind
      - wheelchair
    placeIDs:
      type: array
      items:
        type: string
      description: A list of GIDs to search for.
    postalCode:
      type: string
      description: A mail sorting code.
      example: 10005
    requestId:
      type: string
      description: An identifier to disambiguate requests (echoed by the server).
      example: kesklinn
    restrictions:
      type: object
      properties:
        golf_cart:
          type: boolean
        truck:
          type: boolean
        pedestrian:
          type: boolean
        wheelchair:
          type: boolean
        taxi:
          type: boolean
        HOV:
          type: boolean
        emergency:
          type: boolean
        motorcycle:
          type: boolean
        car:
          type: boolean
        moped:
          type: boolean
        bus:
          type: boolean
        bicycle:
          type: boolean
    reverseLat:
      type: number
      format: double
      description: The latitude of the point at which to perform the search.
      example: 48.848268
      maximum: 90
      minimum: -90
    reverseLon:
      type: number
      format: double
      description: The longitude of the point at which to perform the search.
      example: 2.294471
      maximum: 180
      minimum: -180
    reverseQuery:
      type: object
      properties:
        point.lat:
          $ref: '#/components/schemas/reverseLat'
        point.lon:
          $ref: '#/components/schemas/reverseLon'
        boundary.circle.radius:
          $ref: '#/components/schemas/searchBoundaryCircleRadius'
        boundary.country:
          $ref: '#/components/schemas/searchBoundaryCountry'
        boundary.gid:
          $ref: '#/components/schemas/searchBoundaryGID'
        layers:
          $ref: '#/components/schemas/searchLayers'
        sources:
          $ref: '#/components/schemas/searchSources'
        size:
          $ref: '#/components/schemas/limit'
        lang:
          $ref: '#/components/schemas/geocodeLang'
    roadClass:
      type: string
      description: Class of road (ranked in descending order)
      enum:
      - motorway
      - trunk
      - primary
      - secondary
      - tertiary
      - unclassified
      - residential
      - service_other
    routeLeg:
      type: object
      required:
      - shape
      - summary
      properties:
        maneuvers:
          type: array
          items:
            $ref: '#/components/schemas/routeManeuver'
          minItems: 1
        shape:
          type: string
          description: 'An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm) with 6 digits of decimal precision (NOTE: Most implementations default to 5!).'
        summary:
          $ref: '#/components/schemas/routeSummary'
        elevation_interval:
          type: number
          format: float
          description: The sampling distance between elevation values along the route. This echoes the request parameter having the same name (converted to `units` if necessary).
        elevation:
          type: array
          items:
            type: number
            format: float
          description: An array of elevation values sampled every `elevation_interval`. Units are either metric or imperial depending on the value of `units`.
    routeManeuver:
      type: object
      required:
      - type
      - instruction
      - time
      - length
      - cost
      - begin_shape_index
      - end_shape_index
      - travel_mode
      - travel_type
      properties:
        type:
          type: integer
          description: |
            The type of route maneuver.

            | Code | Type                                |
            |------|-------------------------------------|
            | 0    | None                                |
            | 1    | Start                               |
            | 2    | Start right                         |
            | 3    | Start left                          |
            | 4    | Destination                         |
            | 5    | Destination right                   |
            | 6    | Destination left                    |
            | 7    | Becomes                             |
            | 8    | Continue                            |
            | 9    | Slight right                        |
            | 10   | Right                               |
            | 11   | Sharp right                         |
            | 12   | U-turn right                        |
            | 13   | U-turn left                         |
            | 14   | Sharp left                          |
            | 15   | Left                                |
            | 16   | Slight left                         |
            | 17   | Ramp straight                       |
            | 18   | Ramp right                          |
            | 19   | Ramp left                           |
            | 20   | Exit right                          |
            | 21   | Exit left                           |
            | 22   | Stay straight                       |
            | 23   | Stay right                          |
            | 24   | Stay left                           |
            | 25   | Merge                               |
            | 26   | Enter roundabout                    |
            | 27   | Exit roundabout                     |
            | 28   | Enter ferry                         |
            | 29   | Exit ferry                          |
            | 30   | Transit                             |
            | 31   | Transit transfer                    |
            | 32   | Transit remain on                   |
            | 33   | Transit connection start            |
            | 34   | Transit connection transfer         |
            | 35   | Transit connection destination      |
            | 36   | Post-transit connection destination |
            | 37   | Merge right                         |
            | 38   | Merge left                          |
        instruction:
          type: string
          description: The written maneuver instruction.
        verbal_transition_alert_instruction:
          type: string
          description: Text suitable for use as a verbal navigation alert.
        verbal_pre_transition_instruction:
          type: string
          description: Text suitable for use as a verbal navigation alert immediately prior to the maneuver transition.
        verbal_post_transition_instruction:
          type: string
          description: Text suitable for use as a verbal navigation alert immediately after to the maneuver transition.
        street_names:
          type: array
          items:
            type: string
            example: A1
          description: A list of street names that are consistent along the entire maneuver.
        begin_street_names:
          type: array
          items:
            type: string
            example: A1
          description: A list of street names at the beginning of the maneuver, if they are different from the names at the end.
        time:
          type: number
          format: double
          description: The estimated time to complete the entire maneuver, in seconds.
        length:
          type: number
          format: double
          description: The length of the maneuver, in `units`.
        begin_shape_index:
          type: integer
          description: The index into the list of shape points for the start of the maneuver.
        end_shape_index:
          type: integer
          description: The index into the list of shape points for the end of the maneuver.
        toll:
          type: boolean
          description: True any portion of the maneuver is subject to a toll.
          default: false
        rough:
          type: boolean
          description: True any portion of the maneuver is unpaved or has portions of rough pavement.
          default: false
        gate:
          type: boolean
          description: True if a gate is encountered in the course of this maneuver.
          default: false
        ferry:
          type: boolean
          description: True if a ferry is encountered in the course of this maneuver.
          default: false
        sign:
          $ref: '#/components/schemas/maneuverSign'
        roundabout_exit_count:
          type: integer
          description: The exit number of the roundabout to take after entering.
        depart_instruction:
          type: integer
          description: The written departure time instruction (typically used in a transit maneuver).
          example: 'Depart: 8:04 AM from Seoul Station'
        verbal_depart_instruction:
          type: integer
          description: Text suitable for use as a verbal departure time instruction (typically used in a transit maneuver).
          example: Depart at 8:04 AM from Seoul Station
        arrive_instruction:
          type: integer
          description: The written arrival time instruction (typically used in a transit maneuver).
          example: 'Arrive: 8:06 AM at City Hall'
        verbal_arrive_instruction:
          type: integer
          description: Text suitable for use as a verbal departure time instruction (typically used in a transit maneuver).
          example: Arrive at 8:06 AM at City Hall
        transit_info:
          $ref: '#/components/schemas/transitInfo'
        verbal_multi_cue:
          type: boolean
          description: True if the `verbal_pre_transition_instruction` has been appended with the verbal instruction of the next maneuver.
          default: false
        travel_mode:
          $ref: '#/components/schemas/travelMode'
        travel_type:
          type: string
          description: The type of travel over the maneuver. This can be thought of as a specialization of the travel mode. For example, vehicular travel may be via car, motorcycle, etc.; and travel via bicycle may be via a road bike, mountain bike, etc.
          enum:
          - car
          - motorcycle
          - bus
          - tractor_trailer
          - motor_scooter
          - foot
          - wheelchair
          - segway
          - road
          - cross
          - hybrid
          - mountain
          - tram
          - metro
          - rail
          - ferry
          - cable_car
          - gondola
          - funicular
          - golf_cart
          - low_speed_vehicle
        bss_maneuver_type:
          type: string
          description: Describes a bike share action when using bikeshare routing.
          enum:
          - NoneAction
          - RentBikeAtBikeShare
          - ReturnBikeAtBikeShare
    routeRequest:
      allOf:
      - type: object
        required:
        - locations
        - costing
        properties:
          id:
            $ref: '#/components/schemas/requestId'
          locations:
            type: array
            items:
              $ref: '#/components/schemas/routingWaypoint'
            minItems: 2
          costing:
            $ref: '#/components/schemas/costingModel'
          costing_options:
            $ref: '#/components/schemas/costingOptions'
          date_time:
            $ref: '#/components/schemas/timeConstraintV1'
          exclude_locations:
            type: array
            items:
              $ref: '#/components/schemas/routingWaypoint'
            description: This has the same format as the locations list. Locations are mapped to the closest road(s), and these road(s) are excluded from the route path computation.
          exclude_polygons:
            type: array
            items:
              type: array
              items:
                type: array
                items:
                  type: number
                  format: double
            description: One or multiple exterior rings of polygons in the form of nested JSON arrays. Roads intersecting these rings will be avoided during path finding. Open rings will be closed automatically. If you only need to avoid a few specific roads, it's much more efficient to use `exclude_locations`.
            example:
            - - - 30
                - 10
              - - 40
                - 40
              - - 20
                - 40
              - - 10
                - 20
              - - 30
                - 10
          alternates:
            type: integer
            description: How many alternate routes are desired. Note that fewer or no alternates may be returned. Alternates are not yet supported on routes with more than 2 locations or on time-dependent routes.
          elevation_interval:
            $ref: '#/components/schemas/elevation_interval'
          roundabout_exits:
            type: boolean
            description: Determines whether the output should include roundabout exit instructions.
            default: true
      - $ref: '#/components/schemas/directionsOptions'
      - $ref: '#/components/schemas/extendedDirectionsOptions'
      example:
        costing: auto_traffic
        costing_options:
          auto:
            use_highways: 0
            use_tolls: 1
        date_time:
          type: 1
          value: 2025-07-03T08:06
        locations:
        - lat: 60.5347155
          lon: -149.543469
          type: break
        - lat: 60.5349908
          lon: -149.5485806
          type: break
        units: miles
    routeResponse:
      type: object
      required:
      - trip
      properties:
        id:
          $ref: '#/components/schemas/requestId'
        trip:
          $ref: '#/components/schemas/routeTrip'
        alternates:
          type: array
          items:
            type: object
            properties:
              trip:
                $ref: '#/components/schemas/routeTrip'
      example:
        trip:
          language: en-US
          legs:
          - maneuvers:
            - begin_shape_index: 0
              cost: 15.508
              end_shape_index: 9
              instruction: Drive west on AK 1/Seward Highway.
              length: 0.176
              street_names:
              - AK 1
              - Seward Highway
              time: 11.487
              travel_mode: drive
              travel_type: car
              type: 1
              verbal_multi_cue: true
              verbal_post_transition_instruction: Continue for 900 feet.
              verbal_pre_transition_instruction: Drive west on Alaska 1, Seward Highway. Then You will arrive at your destination.
            - begin_shape_index: 9
              cost: 0.0
              end_shape_index: 9
              instruction: You have arrived at your destination.
              length: 0.0
              time: 0.0
              travel_mode: drive
              travel_type: car
              type: 4
              verbal_pre_transition_instruction: You have arrived at your destination.
              verbal_transition_alert_instruction: You will arrive at your destination.
            shape: wzvmrBxalf|GcCrX}A|Nu@jI}@pMkBtZ{@x^_Afj@Inn@`@veB
            summary:
              cost: 15.508
              has_time_restrictions: false
              length: 0.176
              max_lat: 60.535008
              max_lon: -149.543469
              min_lat: 60.534715
              min_lon: -149.54858
              time: 11.487
          locations:
          - lat: 60.534715
            lon: -149.543469
            original_index: 0
            type: break
          - lat: 60.53499
            lon: -149.54858
            original_index: 1
            type: break
          status: 0
          status_message: Found route between points
          summary:
            cost: 15.508
            has_time_restrictions: false
            length: 0.176
            max_lat: 60.535008
            max_lon: -149.543469
            min_lat: 60.534715
            min_lon: -149.54858
            time: 11.487
          units: miles
    routeSummary:
      type: object
      required:
      - time
      - length
      - min_lat
      - min_lon
      - max_lat
      - max_lon
      properties:
        time:
          type: number
          format: double
          description: The estimated travel time, in seconds
        length:
          type: number
          format: double
          description: The estimated travel distance, in `units` (km or mi)
        min_lat:
          type: number
          format: double
          description: The minimum latitude of the bounding box containing the route.
        max_lat:
          type: number
          format: double
          description: The maximum latitude of the bounding box containing the route.
        min_lon:
          type: number
          format: double
          description: The minimum longitude of the bounding box containing the route.
        max_lon:
          type: number
          format: double
          description: The maximum longitude of the bounding box containing the route.
    routeTrip:
      type: object
      required:
      - status
      - status_message
      - units
      - language
      - locations
      - legs
      - summary
      properties:
        status:
          type: integer
          description: The response status code
        status_message:
          type: string
          description: The response status message
        units:
          $ref: '#/components/schemas/routingLongUnits'
        language:
          $ref: '#/components/schemas/routingLanguages'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/routingResponseWaypoint'
        legs:
          type: array
          items:
            $ref: '#/components/schemas/routeLeg'
        summary:
          $ref: '#/components/schemas/routeSummary'
    routingLanguages:
      type: string
      default: en-US
      enum:
      - bg-BG
      - ca-ES
      - cs-CZ
      - da-DK
      - de-DE
      - el-GR
      - en-GB
      - en-US-x-pirate
      - en-US
      - es-ES
      - et-EE
      - fi-FI
      - fr-FR
      - hi-IN
      - hu-HU
      - it-IT
      - ja-JP
      - nb-NO
      - nl-NL
      - pl-PL
      - pt-BR
      - pt-PT
      - ro-RO
      - ru-RU
      - sk-SK
      - sl-SI
      - sv-SE
      - tr-TR
      - uk-UA
    routingLongUnits:
      type: string
      default: kilometers
      enum:
      - miles
      - kilometers
    routingResponseWaypoint:
      allOf:
      - $ref: '#/components/schemas/simpleRoutingWaypoint'
      - type: object
        properties:
          original_index:
            type: integer
            description: The original index of the location (locations may be reordered for optimized routes)
            minimum: 0
    routingWaypoint:
      allOf:
      - $ref: '#/components/schemas/simpleRoutingWaypoint'
      - type: object
        properties:
          heading:
            type: integer
            description: |-
              The preferred direction of travel when starting the route, in integer clockwise degrees from north. North is 0, south is 180, east is 90, and west is 270.
              Avoid specifying this unless you really know what you're doing. Most use cases for this are better served by `preferred_side`.
            maximum: 360
            minimum: 0
          heading_tolerance:
            type: integer
            description: The tolerance (in degrees) determining whether a street is considered the same direction.
            default: 60
            maximum: 360
            minimum: 0
          minimum_reachability:
            type: integer
            description: The minimum number of nodes that must be reachable for a given edge to consider that edge as belonging to a connected region. If a candidate edge has fewer connections, it will be considered a disconnected island.
            default: 50
            minimum: 0
          radius:
            type: integer
            description: |-
              The distance (in meters) to look for candidate edges around the location for purposes of snapping locations to the route graph. If there are no candidates within this distance, the closest candidate within a reasonable search distance will be used. This is subject to clamping by internal limits.
              This allows the routing engine to match another edge which is NOT the closest to your location, but in within this range. This can be useful if you have other constraints and want to disambiguate, but beware that this can lead to very strange results, particularly if you have specified other parameters like `heading`. This is an advanced feature and should only be used with extreme care.
            default: 0
            minimum: 0
          rank_candidates:
            type: boolean
            description: If true, candidates will be ranked according to their distance from the target location as well as other factors. If false, candidates will only be ranked using their distance from the target.
            default: true
          preferred_side:
            type: string
            description: If the location is not offset from the road centerline or is closest to an intersection, this option has no effect. Otherwise, the preferred side of street is used to determine whether or not the location should be visited from the same, opposite or either side of the road with respect to the side of the road the given locale drives on.
            enum:
            - same
            - opposite
            - either
          node_snap_tolerance:
            type: integer
            description: During edge correlation this is the tolerance (in meters) used to determine whether or not to snap to the intersection rather than along the street, if the snap location is within this distance from the intersection, the intersection is used instead.
            default: 5
            minimum: 0
          street_side_tolerance:
            type: integer
            description: A tolerance in meters from the edge centerline used for determining the side of the street that the location is on. If the distance to the centerline is less than this tolerance, no side will be inferred. Otherwise, the left or right side will be selected depending on the direction of travel.
            default: 5
            minimum: 0
          street_side_max_distance:
            type: integer
            description: The max distance in meters that the input coordinates or display lat/lon can be from the edge centerline for them to be used for determining the side of the street. Beyond this distance, no street side is inferred.
            default: 1000
            minimum: 0
          search_filter:
            type: object
            properties:
              exclude_tunnel:
                type: boolean
                description: Excludes roads marked as tunnels
                default: false
              exclude_bridge:
                type: boolean
                description: Excludes roads marked as bridges
                default: false
              exclude_ramp:
                type: boolean
                description: Excludes roads marked as ramps
                default: false
              exclude_closures:
                type: boolean
                description: Excludes roads marked as closed
                default: true
              min_road_class:
                allOf:
                - $ref: '#/components/schemas/roadClass'
                description: The lowest road class allowed
                default: service_other
              max_road_class:
                allOf:
                - $ref: '#/components/schemas/roadClass'
                description: The highest road class allowed
                default: motorway
          search_cutoff:
            type: integer
            description: A hard cutoff (in meters) for the search distance when matching this location to the road network. This overrides the server default and limits how far from the input coordinate the router will search for candidate edges. Use this sparingly.
            minimum: 0
    searchAddress:
      type: string
      description: A street name, optionally with a house number.
      example: 11 Wall Street
    searchBorough:
      type: string
      description: A unit within a city (not widely used, but present in places like NYC and Mexico City).
      example: Manhattan
    searchBoundaryCircleLat:
      type: number
      format: double
      description: The latitude of the center of a circle to limit the search to. Requires `boundary.circle.lon`.
      maximum: 90
      minimum: -90
    searchBoundaryCircleLon:
      type: number
      format: double
      description: The longitude of the center of a circle to limit the search to. Requires `boundary.circle.lat`.
      maximum: 180
      minimum: -180
    searchBoundaryCircleRadius:
      type: number
      format: double
      description: The radius of the circle (in kilometers) to limit the search to. Defaults to 50km if unspecified.
    searchBoundaryCountry:
      type: array
      items:
        type: string
      description: A list of country codes in ISO 3116-1 alpha-2 or alpha-3 format.
    searchBoundaryGID:
      type: string
      description: The GID of an area to limit the search to.
    searchBoundaryRectMaxLat:
      type: number
      format: double
      description: Defines the max latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
      maximum: 90
      minimum: -90
    searchBoundaryRectMaxLon:
      type: number
      format: double
      description: Defines the max longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
      maximum: 180
      minimum: -180
    searchBoundaryRectMinLat:
      type: number
      format: double
      description: Defines the min latitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
      maximum: 90
      minimum: -90
    searchBoundaryRectMinLon:
      type: number
      format: double
      description: Defines the min longitude component of a bounding box to limit the search to. Requires all other `boundary.rect` parameters to be specified.
      maximum: 180
      minimum: -180
    searchCountry:
      type: string
      description: A country code in ISO 3116-1 alpha-2 or alpha-3 format.
      example: USA
    searchCounty:
      type: string
      description: Administrative divisions between localities and regions. Not commonly used as input to structured geocoding.
      example: New York County
    searchFocusLat:
      type: number
      format: double
      description: The latitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lon`.
      maximum: 90
      minimum: -90
    searchFocusLon:
      type: number
      format: double
      description: The longitude of the point to focus the search on. This will bias results toward the focus point. Requires `focus.point.lat`.
      maximum: 180
      minimum: -180
    searchLayers:
      type: array
      items:
        $ref: '#/components/schemas/geocodingLayer'
      description: A list of layers to limit the search to.
    searchLocality:
      type: string
      description: The city, village, town, etc. that the place/address is part of.
      example: New York
    searchNeighborhood:
      type: string
      description: Varies by area, but has a locally specific meaning (NOT always an official administrative unit).
      example: Financial District
    searchQuery:
      type: object
      properties:
        text:
          $ref: '#/components/schemas/searchText'
        focus.point.lat:
          $ref: '#/components/schemas/searchFocusLat'
        focus.point.lon:
          $ref: '#/components/schemas/searchFocusLon'
        boundary.rect.min_lat:
          $ref: '#/components/schemas/searchBoundaryRectMinLat'
        boundary.rect.max_lat:
          $ref: '#/components/schemas/searchBoundaryRectMaxLat'
        boundary.rect.min_lon:
          $ref: '#/components/schemas/searchBoundaryRectMinLon'
        boundary.rect.max_lon:
          $ref: '#/components/schemas/searchBoundaryRectMaxLon'
        boundary.circle.lat:
          $ref: '#/components/schemas/searchBoundaryCircleLat'
        boundary.circle.lon:
          $ref: '#/components/schemas/searchBoundaryCircleLon'
        boundary.circle.radius:
          $ref: '#/components/schemas/searchBoundaryCircleRadius'
        boundary.country:
          $ref: '#/components/schemas/searchBoundaryCountry'
        boundary.gid:
          $ref: '#/components/schemas/searchBoundaryGID'
        layers:
          $ref: '#/components/schemas/searchLayers'
        sources:
          $ref: '#/components/schemas/searchSources'
        size:
          $ref: '#/components/schemas/limit'
        lang:
          $ref: '#/components/schemas/geocodeLang'
    searchRegion:
      type: string
      description: Typically the first administrative division within a country. For example, a US state or a Canadian province.
      example: New York
    searchSources:
      type: array
      items:
        $ref: '#/components/schemas/geocodingSource'
      description: A list of sources to limit the search to.
    searchStructuredQuery:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/searchAddress'
        neighbourhood:
          $ref: '#/components/schemas/searchNeighborhood'
        borough:
          $ref: '#/components/schemas/searchBorough'
        locality:
          $ref: '#/components/schemas/searchLocality'
        county:
          $ref: '#/components/schemas/searchCounty'
        region:
          $ref: '#/components/schemas/searchRegion'
        postalcode:
          $ref: '#/components/schemas/postalCode'
        country:
          $ref: '#/components/schemas/searchCountry'
        focus.point.lat:
          $ref: '#/components/schemas/searchFocusLat'
        focus.point.lon:
          $ref: '#/components/schemas/searchFocusLon'
        boundary.rect.min_lat:
          $ref: '#/components/schemas/searchBoundaryRectMinLat'
        boundary.rect.max_lat:
          $ref: '#/components/schemas/searchBoundaryRectMaxLat'
        boundary.rect.min_lon:
          $ref: '#/components/schemas/searchBoundaryRectMinLon'
        boundary.rect.max_lon:
          $ref: '#/components/schemas/searchBoundaryRectMaxLon'
        boundary.circle.lat:
          $ref: '#/components/schemas/searchBoundaryCircleLat'
        boundary.circle.lon:
          $ref: '#/components/schemas/searchBoundaryCircleLon'
        boundary.circle.radius:
          $ref: '#/components/schemas/searchBoundaryCircleRadius'
        boundary.country:
          $ref: '#/components/schemas/searchBoundaryCountry'
        boundary.gid:
          $ref: '#/components/schemas/searchBoundaryGID'
        layers:
          $ref: '#/components/schemas/searchLayers'
        sources:
          $ref: '#/components/schemas/searchSources'
        size:
          $ref: '#/components/schemas/limit'
        lang:
          $ref: '#/components/schemas/geocodeLang'
    searchText:
      type: string
      description: The place name (address, venue name, etc.) to search for.
      example: 1600 Pennsylvania Ave NW
    serviceFactorCostingOption:
      type: number
      format: double
      description: A factor that multiplies the cost when service roads are encountered. The default is 1.2 for cars and busses, and 1 for trucks, motor scooters, and motorcycles.
      default: 1
    servicePenaltyCostingOption:
      type: integer
      description: A penalty applied to transitions to service roads. This penalty can be used to reduce the likelihood of suggesting a route with service roads unless absolutely necessary. The default penalty is 15 for cars, busses, motor scooters, and motorcycles; and zero for others.
    simpleRoutingWaypoint:
      allOf:
      - $ref: '#/components/schemas/coordinate'
      - type: object
        properties:
          type:
            type: string
            description: A `break` represents the start or end of a leg, and allows reversals. A `through` location is an intermediate waypoint that must be visited between `break`s, but at which reversals are not allowed. A `via` is similar to a `through` except that reversals are allowed. A `break_through` is similar to a `break` in that it can be the start/end of a leg, but does not allow reversals. Defaults to `break`.
            enum:
            - break
            - through
            - via
            - break_through
    speeds:
      type: object
      properties:
        predicted:
          type: boolean
          description: Does this edge have predicted (historical) speed records?
        constrained_flow:
          type: integer
          description: Speed when there is no traffic, in kph.
        free_flow:
          type: integer
          description: Speed when there is heavy traffic, in kph.
        type:
          type: string
          description: The type of speed which is used when setting default speeds. When `tagged`, the explicit `max_speed` tags from OpenStreetMap are being used. When `classified`, the values are being inferred from the highway classification.
          enum:
          - classified
          - tagged
        default:
          type: integer
          description: 'The default speed used for calculations. NOTE: Values greater than 250 are used for special cases and should not be treated as literal.'
    timeConstraintV1:
      type: object
      description: Specifies the time context for time-dependent routing (e.g., to account for traffic patterns or time-based access restrictions). Defaults to depart_now for traffic-influenced routing profiles like `auto_traffic`.
      required:
      - type
      properties:
        type:
          type: string
          description: 'The type of time constraint: `depart_now` = depart now (current time), `depart_at` = depart at the specified time, `arrive_at` = arrive by the specified time.'
          enum:
          - depart_now
          - depart_at
          - arrive_at
        value:
          type: string
          description: The date and time in `YYYY-MM-DDTHH:MM` format (seconds are accepted, but will be ignored). The date and time are local (civil) time as observed at the location. Required when type is depart_at or arrive_at. Must not be provided for depart_now.
          example: 2025-07-03T08:06
      examples:
      - type: depart_now
      - type: depart_at
        value: 2025-07-03T08:06
    traceAttributeFilterOptions:
      type: object
      required:
      - attributes
      - action
      properties:
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/traceAttributeKey'
          minItems: 1
        action:
          type: string
          description: Determines whether the list of attributes will be used as a whitelist or a blacklist.
          enum:
          - include
          - exclude
    traceAttributeKey:
      type: string
      enum:
      - edge.names
      - edge.length
      - edge.speed
      - edge.road_class
      - edge.begin_heading
      - edge.end_heading
      - edge.begin_shape_index
      - edge.end_shape_index
      - edge.traversability
      - edge.use
      - edge.toll
      - edge.unpaved
      - edge.tunnel
      - edge.bridge
      - edge.roundabout
      - edge.internal_intersection
      - edge.drive_on_right
      - edge.surface
      - edge.sign.exit_number
      - edge.sign.exit_branch
      - edge.sign.exit_toward
      - edge.sign.exit_name
      - edge.travel_mode
      - edge.vehicle_type
      - edge.pedestrian_type
      - edge.bicycle_type
      - edge.transit_type
      - edge.id
      - edge.way_id
      - edge.weighted_grade
      - edge.max_upward_grade
      - edge.max_downward_grade
      - edge.mean_elevation
      - edge.lane_count
      - edge.cycle_lane
      - edge.bicycle_network
      - edge.sac_scale
      - edge.sidewalk
      - edge.density
      - edge.speed_limit
      - edge.truck_speed
      - edge.truck_route
      - node.intersecting_edge.begin_heading
      - node.intersecting_edge.from_edge_name_consistency
      - node.intersecting_edge.to_edge_name_consistency
      - node.intersecting_edge.driveability
      - node.intersecting_edge.cyclability
      - node.intersecting_edge.walkability
      - node.intersecting_edge.use
      - node.intersecting_edge.road_class
      - node.elapsed_time
      - node.admin_index
      - node.type
      - node.fork
      - node.time_zone
      - osm_changeset
      - shape
      - admin.country_code
      - admin.country_text
      - admin.state_code
      - admin.state_text
      - matched.point
      - matched.type
      - matched.edge_index
      - matched.begin_route_discontinuity
      - matched.end_route_discontinuity
      - matched.distance_along_edge
      - matched.distance_from_trace_point
    traceAttributesBaseResponse:
      type: object
      properties:
        edges:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/traceEdge'
          description: The list of edges matched along the path.
        admins:
          type: array
          items:
            $ref: '#/components/schemas/adminRegion'
          description: The set of administrative regions matched along the path. Rather than repeating this information for every end node, the admins in this list are referenced by index.
        matched_points:
          type: array
          items:
            $ref: '#/components/schemas/matchedPoint'
          description: List of match results when using the map_snap shape match algorithm. There is a one-to-one correspondence with the input set of latitude, longitude coordinates and this list of match results.
        osm_changeset:
          type: integer
        shape:
          type: string
          description: The encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm) of the matched path.
        confidence_score:
          type: number
          format: double
          maximum: 1
          minimum: 0
    traceAttributesRequest:
      allOf:
      - $ref: '#/components/schemas/baseTraceRequest'
      - type: object
        properties:
          filters:
            allOf:
            - $ref: '#/components/schemas/traceAttributeFilterOptions'
            description: If present, provides either a whitelist or a blacklist of keys to include/exclude in the response. This key is optional, and if omitted from the request, all available info will be returned.
          elevation_interval:
            $ref: '#/components/schemas/elevation_interval'
          units:
            $ref: '#/components/schemas/distanceUnit'
      example:
        costing: pedestrian
        encoded_polyline: _grbgAh~{nhF?lBAzBFvBHxBEtBKdB?fB@dBZdBb@hBh@jBb@x@\|@x@pB\x@v@hBl@nBPbCXtBn@|@z@ZbAEbAa@~@q@z@QhA]pAUpAVhAPlAWtASpAAdA[dASdAQhAIlARjANnAZhAf@n@`A?lB^nCRbA\xB`@vBf@tBTbCFbARzBZvBThBRnBNrBP`CHbCF`CNdCb@vBX`ARlAJfADhA@dAFdAP`AR`Ah@hBd@bBl@rBV|B?vB]tBCvBBhAF`CFnBXtAVxAVpAVtAb@|AZ`Bd@~BJfA@fAHdADhADhABjAGzAInAAjAB|BNbCR|BTjBZtB`@lBh@lB\|Bl@rBXtBN`Al@g@t@?nAA~AKvACvAAlAMdAU`Ac@hAShAI`AJ`AIdAi@bAu@|@k@p@]p@a@bAc@z@g@~@Ot@Bz@f@X`BFtBXdCLbAf@zBh@fBb@xAb@nATjAKjAW`BI|AEpAHjAPdAAfAGdAFjAv@p@XlAVnA?~A?jAInAPtAVxAXnAf@tBDpBJpBXhBJfBDpAZ|Ax@pAz@h@~@lA|@bAnAd@hAj@tAR~AKxAc@xAShA]hAIdAAjA]~A[v@BhB?dBSv@Ct@CvAI~@Oz@Pv@dAz@lAj@~A^`B^|AXvAVpAXdBh@~Ap@fCh@hB\zBN`Aj@xBFdA@jALbAPbAJdAHdAJbAHbAHfAJhALbA\lBTvBAdC@bC@jCKjASbC?`CM`CDpB\xAj@tB\fA\bAVfAJdAJbAXz@L|BO`AOdCDdA@~B\z@l@v@l@v@l@r@j@t@b@x@b@r@z@jBVfCJdAJdANbCPfCF|BRhBS~BS`AYbAe@~BQdA
        shape_match: map_snap
        units: miles
    traceAttributesResponse:
      allOf:
      - $ref: '#/components/schemas/traceAttributesBaseResponse'
      - type: object
        properties:
          id:
            $ref: '#/components/schemas/requestId'
          units:
            $ref: '#/components/schemas/routingLongUnits'
          alternate_paths:
            type: array
            items:
              $ref: '#/components/schemas/traceAttributesBaseResponse'
            description: Alternate paths, if any, that were not classified as the best match.
    traceEdge:
      type: object
      properties:
        names:
          type: array
          items:
            type: string
          description: The name(s) of the road at this edge, if any.
        length:
          type: number
          format: double
          description: The length of this edge in `units`.
        speed:
          type: integer
          description: The speed of this edge in `units`/hr, in terms of average/free-flow speed for routing purposes. This is affected by any number of factors such as the road service, vehicle type, etc. and not just the posted speed limits.
        road_class:
          $ref: '#/components/schemas/roadClass'
        begin_heading:
          type: integer
          description: The direction at the beginning of an edge. The units are degrees clockwise from north.
        end_heading:
          type: integer
          description: The direction at the end of an edge. The units are degrees clockwise from north.
        begin_shape_index:
          type: integer
          description: Index into the list of shape points for the start of the edge.
        end_shape_index:
          type: integer
          description: Index into the list of shape points for the end of the edge.
        traversability:
          $ref: '#/components/schemas/traversability'
        use:
          $ref: '#/components/schemas/edgeUse'
        toll:
          type: boolean
          description: True if the edge has a toll.
        unpaved:
          type: boolean
          description: True if the edge has rough payment.
        tunnel:
          type: boolean
          description: True if the edge is a tunnel.
        bridge:
          type: boolean
          description: True if the edge is a bridge.
        roundabout:
          type: boolean
          description: True if the edge is a roundabout.
        internal_intersection:
          type: boolean
          description: True if the edge is an internal intersection.
        drive_on_right:
          type: boolean
          description: True if the edge is in an area where you must drive on the right side of the road.
        surface:
          type: string
          description: The type of surface for the edge.
          enum:
          - paved_smooth
          - paved
          - paved_rough
          - compacted
          - dirt
          - gravel
          - path
          - impassable
        sign:
          $ref: '#/components/schemas/edgeSign'
        travel_mode:
          $ref: '#/components/schemas/travelMode'
        vehicle_type:
          type: string
          enum:
          - car
          - motorcycle
          - bus
          - tractor_trailer
          - golf_cart
          - low_speed_vehicle
        pedestrian_type:
          type: string
          enum:
          - foot
          - wheelchair
          - segway
        bicycle_type:
          type: string
          enum:
          - road
          - cross
          - hybrid
          - mountain
        transit_type:
          type: string
          enum:
          - tram
          - metro
          - rail
          - bus
          - ferry
          - cable_car
          - gondola
          - funicular
        id:
          type: integer
          format: int64
        way_id:
          type: integer
          format: int64
          description: The way identifier of the edge in OSM.
        weighted_grade:
          type: number
          format: double
          description: The weighted grade factor. The weighted grade is derived from elevation data. It is a measure used for hill avoidance in routing - sort of a relative energy use along an edge. But since an edge can possibly go up and down over several hills, it might not equate to what you would normally think of as grade.
        max_upward_grade:
          type: integer
          description: The maximum upward slope. A value of 32768 indicates no elevation data is available for this edge.
        max_downward_grade:
          type: integer
          description: The maximum downward slope. A value of 32768 indicates no elevation data is available for this edge.
        mean_elevation:
          type: integer
          description: The mean elevation along the edge. Units are meters by default. If the `units` are specified as miles, then the mean elevation is returned in feet. A value of 32768 indicates no elevation data is available for this edge.
        lane_count:
          type: integer
          description: The number of lanes for this edge.
        cycle_lane:
          type: string
          description: The type of cycle lane (if any) along this edge.
          enum:
          - none
          - shared
          - dedicated
          - separated
        bicycle_network:
          type: integer
          description: |-
            The type of bicycle network, if any. This is an integer comprised of constants bitwise or'd together. For example, a route that's part of both a local and mountain network would have a value of 12.
            1 - National 2 - Regional 4 - Local 8 - Mountain
        sac_scale:
          type: integer
          description: |-
            The difficulty of the hiking trail according to the SAC scale.
            0 - No Sac Scale 1 - Hiking 2 - Mountain hiking 3 - Demanding mountain hiking 4 - Alpine hiking 5 - Demanding alpine hiking 6 - Difficult alpine hiking
        sidewalk:
          type: string
          enum:
          - left
          - right
          - both
          - none
        density:
          type: integer
        speed_limit:
          type: integer
          description: The speed limit along the edge measured in `units`/hr. This may be either an integer or the string "unlimited" if speed limit data is available. If absent, there is no speed limit data available.
        truck_speed:
          type: integer
          description: The truck speed of this edge in `units`/hr, in terms of average/free-flow speed for routing purposes. This is affected by any number of factors such as the road service, vehicle type, etc. and not just the posted speed limits.
        truck_route:
          type: boolean
          description: True if the edge is part of a truck route/network.
        end_node:
          $ref: '#/components/schemas/endNode'
    transitInfo:
      type: object
      description: Public transit info (not currently supported).
      additionalProperties: true
    travelMode:
      type: string
      enum:
      - drive
      - pedestrian
      - bicycle
      - transit
    traversability:
      type: string
      description: The directions in which the edge is traversable.
      enum:
      - forward
      - backward
      - both
    truckCostingOptions:
      allOf:
      - $ref: '#/components/schemas/autoCostingOptions'
      - type: object
        properties:
          height:
            type: number
            format: double
            description: The height of the truck (in meters).
            default: 4.11
          width:
            type: number
            format: double
            description: The width of the truck (in meters).
            default: 2.6
          length:
            type: number
            format: double
            description: The length of the truck (in meters).
            default: 21.64
          weight:
            type: number
            format: double
            description: The weight of the truck (in tonnes).
            default: 21.77
          axle_load:
            type: number
            format: double
            description: The axle load of the truck (in tonnes).
            default: 9.07
          hazmat:
            type: boolean
            description: Whether or not the truck is carrying hazardous materials.
            default: false
          axle_count:
            type: integer
            description: The number of axles on the truck.
            default: 5
            maximum: 20
            minimum: 2
          low_class_penalty:
            type: number
            format: double
            description: A penalty (in seconds) for using residential or service roads.
            default: 30
          use_truck_route:
            type: number
            format: double
            description: A measure of preference for using designated truck routes. Values near 0 (default) have no preference, while values near 1 strongly prefer truck routes.
            default: 0
            maximum: 1
            minimum: 0
          hgv_no_access_penalty:
            type: number
            format: double
            description: A penalty (in seconds) applied to roads which do not allow HGVs. This adds a penalty rather than outright blocking, allowing the router to still use these roads if no better alternative exists. The default penalty is sufficiently high.
    tzResponse:
      type: object
      required:
      - tz_id
      - base_utc_offset
      - dst_offset
      - timestamp
      - local_rfc_3389_timestamp
      properties:
        tz_id:
          type: string
          description: |-
            The canonical time zone ID.

            In the event that multiple time zones could be returned,
            the first one from the Unicode CLDR timezone.xml is returned.
          examples:
          - Europe/Zurich
          - America/New_York
        base_utc_offset:
          type: integer
          format: int32
          description: The base offset, in seconds, from UTC that is normally in effect for this time zone.
          examples:
          - 3600
          - -18000
        dst_offset:
          type: integer
          format: int32
          description: |-
            The special offset, in seconds, from UTC that is in effect for this time zone as of the queried timestamp (defaults to now).

            If no additional offsets are in effect, this value is zero.
            This typically reflects Daylight Saving Time, but may indicate other special offsets.
            To get the total offset in effect, add `dst_offset` and `utc_offset` together.

            NOTE: This field can be somewhat confusing.
            We recommend switching to the v2 endpoint and using the is_dst filed if you need to identify whether DST is being observed.
          deprecated: true
          examples:
          - 3600
          - 0
        timestamp:
          type: integer
          format: int64
          description: |-
            Integer non-leap seconds since January 1, 1970 (UNIX timestamp).

            If present, offsets will be calculated as of this time.
            Otherwise, offsets will be effective as of the time of the query.
          examples:
          - 1749479378
        local_rfc_2822_timestamp:
          type:
          - string
          - 'null'
          description: |-
            The local time expressed as an RFC 2822 timestamp (e.g. Tue, 1 Jun 2003 10:52:37 -0500).

            If a timestamp is included in the request, it will be localized here.
            Otherwise, this will reflect the time of the request.

            NOTE: RFC 2822 is more restrictive than other formats and cannot represent all dates.
          examples:
          - Mon, 9 Jun 2025 16:29:38 +0200
          - Tue, 1 Jul 2003 10:52:37 -0500
        local_rfc_3389_timestamp:
          type: string
          description: |-
            The local time expressed as an RFC 3389 (ISO 8601) timestamp (e.g. 2003-06-01T10:52:37+02:00).

            If a timestamp is included in the request, it will be localized here.
            Otherwise, this will reflect the time of the request.
          examples:
          - 2025-06-09T16:29:38+02:00
          - 2003-06-01T10:52:37-05:00
    tzResponseV2:
      type: object
      required:
      - tz_id
      - utc_offset
      - is_dst
      - timestamp
      - local_rfc_3339_timestamp
      properties:
        tz_id:
          type: string
          description: |-
            The canonical time zone ID.

            In the event that multiple time zones could be returned,
            the first one from the Unicode CLDR timezone.xml is returned.
          examples:
          - Europe/Zurich
          - America/New_York
        utc_offset:
          type: integer
          format: int32
          description: |-
            The total offset, in seconds, from UTC that is currently in effect for this time zone.

            This accounts for both the standard offset and any seasonal adjustments (e.g. DST).
          examples:
          - 7200
          - -18000
        is_dst:
          type: boolean
          description: |-
            Whether Daylight Saving Time (or a similar seasonal offset) is in effect
            at the queried timestamp.
          examples:
          - true
          - false
        timestamp:
          type: integer
          format: int64
          description: |-
            Integer non-leap seconds since January 1, 1970 (UNIX timestamp).

            If present, offsets will be calculated as of this time.
            Otherwise, offsets will be effective as of the time of the query.
          examples:
          - 1749479378
        local_rfc_2822_timestamp:
          type:
          - string
          - 'null'
          description: |-
            The local time expressed as an RFC 2822 timestamp (e.g. Tue, 1 Jun 2003 10:52:37 -0500).

            If a timestamp is included in the request, it will be localized here.
            Otherwise, this will reflect the time of the request.

            NOTE: RFC 2822 is more restrictive than other formats and cannot represent all dates.
          examples:
          - Mon, 9 Jun 2025 16:29:38 +0200
          - Tue, 1 Jul 2003 10:52:37 -0500
        local_rfc_3339_timestamp:
          type: string
          description: |-
            The local time expressed as an RFC 3339 (ISO 8601) timestamp (e.g. 2003-06-01T10:52:37+02:00).

            If a timestamp is included in the request, it will be localized here.
            Otherwise, this will reflect the time of the request.
          examples:
          - 2025-06-09T16:29:38+02:00
          - 2003-06-01T10:52:37-05:00
    useFerryCostingOption:
      type: number
      format: double
      description: A measure of willingness to take ferries. Values near 0 attempt to avoid ferries, and values near 1 will favour them. Note that as some routes may be impossible without ferries, 0 does not guarantee avoidance of them.
      default: 0.5
      maximum: 1
      minimum: 0
    useHillsCostingOption:
      type: number
      format: double
      description: A measure of willingness to take tackle hills. Values near 0 attempt to avoid hills and steeper grades even if it means a longer route, and values near 1 indicates that the user does not fear them. Note that as some routes may be impossible without hills, 0 does not guarantee avoidance of them.
      default: 0.5
      maximum: 1
      minimum: 0
    useLivingStreetsCostingOption:
      type: number
      format: double
      description: A measure of willingness to take living streets. Values near 0 attempt to avoid them, and values near 1 will favour them. Note that as some routes may be impossible without living streets, 0 does not guarantee avoidance of them. The default value is 0 for trucks; 0.1 for other motor vehicles; 0.5 for bicycles; and 0.6 for pedestrians.
      maximum: 1
      minimum: 0
    useTracksCostingOption:
      type: number
      format: double
      description: A measure of willingness to take track roads. Values near 0 attempt to avoid them, and values near 1 will favour them. Note that as some routes may be impossible without track roads, 0 does not guarantee avoidance of them. The default value is 0 for automobiles, busses, and trucks; and 0.5 for all other costing modes.
      maximum: 1
      minimum: 0
    warning:
      type: object
      properties:
        text:
          type: string
        code:
          type: integer
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: api_key
