{"openapi":"3.0.2","info":{"title":"Indoor Routing API v1","version":"1.0.11","description":"HERE Indoor Routing Service enables customizable route calculation within Indoor maps, supporting both pedestrian and vehicle transport modes.","termsOfService":"https://legal.here.com/en-gb/terms/here-end-user-terms","license":{"name":"HERE Documentation License","url":"https://legal.here.com/en-gb/terms/documentation-license"}},"servers":[{"url":"https://indoor.router.sit.hereapi.com/v1","description":"Indoor Routing Service - Sit"},{"url":"https://indoor.router.hereapi.com/v1","description":"Indoor Routing Service - Prd"}],"security":[{"BearerAuth":[]}],"tags":[{"name":"Indoor Routing","description":"Indoor Routing endpoints"},{"name":"API Information","description":"Additional API information"}],"paths":{"/routes":{"get":{"x-eov-operation-handler":"routes","x-eov-operation-id":"getRoute","operationId":"Indoor Routing API v1 getRoute","summary":"Calculates indoor routes via GET","description":"Calculates a route through a HERE indoor map","tags":["Indoor Routing"],"parameters":[{"$ref":"#/components/parameters/xCorrelationId"},{"$ref":"#/components/parameters/xRequestId"},{"$ref":"#/components/parameters/origin"},{"$ref":"#/components/parameters/destination"},{"$ref":"#/components/parameters/transportMode"},{"$ref":"#/components/parameters/via"},{"$ref":"#/components/parameters/routingMode"},{"$ref":"#/components/parameters/pedestrian"},{"$ref":"#/components/parameters/vehicle"},{"$ref":"#/components/parameters/avoid"}],"responses":{"200":{"$ref":"#/components/responses/IndoorRouteResponse"},"400":{"$ref":"#/components/responses/Error400Response"},"401":{"$ref":"#/components/responses/Error401Response"},"403":{"$ref":"#/components/responses/Error403Response"},"404":{"$ref":"#/components/responses/Error404Response"},"429":{"$ref":"#/components/responses/Error429Response"},"500":{"$ref":"#/components/responses/Error500Response"},"502":{"$ref":"#/components/responses/Error502Response"},"503":{"$ref":"#/components/responses/Error503Response"}}}},"/version":{"get":{"x-eov-operation-handler":"version","x-eov-operation-id":"getApiVersion","operationId":"Indoor Routing API v1 getVersion","summary":"Returns the full version of the API","tags":["API Information"],"parameters":[{"$ref":"#/components/parameters/xCorrelationId"},{"$ref":"#/components/parameters/xRequestId"}],"security":[],"responses":{"200":{"$ref":"#/components/responses/VersionResponse"},"500":{"$ref":"#/components/responses/Error500Response"}}}},"/health":{"get":{"x-eov-operation-handler":"health","x-eov-operation-id":"getApiHealth","operationId":"Indoor Routing API v1 getHealth","summary":"Tests basic health of the service","tags":["API Information"],"parameters":[{"$ref":"#/components/parameters/xCorrelationId"},{"$ref":"#/components/parameters/xRequestId"}],"security":[],"responses":{"200":{"$ref":"#/components/responses/HealthResponse"},"500":{"$ref":"#/components/responses/Error500Response"}}}},"/openapi":{"get":{"x-eov-operation-handler":"openapi","x-eov-operation-id":"getOpenapi","operationId":"Indoor Routing API v1 getOpenapi","summary":"Retrieves this API specification in OpenAPI 3 format","tags":["API Information"],"parameters":[{"$ref":"#/components/parameters/xCorrelationId"},{"$ref":"#/components/parameters/xRequestId"}],"security":[],"responses":{"200":{"$ref":"#/components/responses/OpenApiResponse"},"500":{"$ref":"#/components/responses/Error500Response"}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A client access token needs to be obtained from a separate endpoint using the client credentials and an OAuth 1.0a HMAC-SHA256 signed request.\nFor more information, see https://www.here.com/docs/bundle/identity-and-access-management-developer-guide/page/topics/plat-token.html\n"}},"schemas":{"ArriveAction":{"description":"The final arrival maneuver","allOf":[{"type":"object","required":["action"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["arrive"]}}},{"$ref":"#/components/schemas/OffsetAction"}]},"AuthError":{"description":"An authentication/authorization error","type":"object","properties":{"error":{"description":"Human-readable error","type":"string"},"error_description":{"description":"Human-readable error description","type":"string"}}},"Avoid":{"type":"object","properties":{"features":{"description":"A list of features that routes will avoid.","type":"array","uniqueItems":true,"items":{"type":"string","enum":["elevator","escalator","ramp","stairs","pedestrianRamp","carLift","driveRamp","elevatorBank"]}}}},"AvoidAsShallowObject":{"type":"object","properties":{"features":{"description":"A list of features that routes will avoid.\nAs some query string libraries support a `deepObject` format depth of 1 only, the array has to be stringified into a comma-separated list.\nAllowed values: elevator, escalator, ramp, stairs, pedestrianRamp, carLift, driveRamp, elevatorBank\n","type":"string"}}},"BasePlace":{"type":"object","properties":{"name":{"description":"Location name","type":"string","pattern":"^[A-Za-z0-9]+$"},"waypoint":{"description":"If present, this place corresponds to the waypoint in the request with the same index.","type":"integer"},"type":{"description":"Place type. Each place type can have extra attributes.\n\n**NOTE:** Please note that the list of possible place types could be extended in the future.\nThe client application is expected to handle such a case gracefully.\n","type":"string"},"location":{"description":"The position of this location\n\nThis position was used in route calculation. It may be different to the original position provided in the request.\n","allOf":[{"$ref":"#/components/schemas/IndoorLocation"}]},"originalLocation":{"description":"If present, the original position of this location provided in the request.","allOf":[{"$ref":"#/components/schemas/IndoorLocation"}]}},"required":["type","location"]},"ContinueAction":{"description":"Continue maneuver","allOf":[{"type":"object","required":["action"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["continue"]}}},{"$ref":"#/components/schemas/OffsetAction"}]},"DepartAction":{"description":"The initial departure maneuver","allOf":[{"type":"object","required":["action"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["depart"]}}},{"$ref":"#/components/schemas/OffsetAction"}]},"EnterAction":{"description":"Enter maneuver","allOf":[{"type":"object","required":["action","space"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["enter"]},"space":{"$ref":"#/components/schemas/Space"}}},{"$ref":"#/components/schemas/OffsetAction"}]},"Error":{"description":"generic error","type":"object","required":["status","code","title","cause","action","correlationId"],"properties":{"status":{"type":"integer","description":"HTTP status code","example":400},"code":{"type":"string","pattern":"^E[0-9]{6}$"},"title":{"type":"string"},"cause":{"type":"string"},"action":{"type":"string"},"details":{"type":"array","items":{"type":"object"}},"correlationId":{"type":"string"}}},"IndoorLocation":{"type":"object","description":"Indoor location on Earth","required":["lat","lng","lvl","levelId"],"properties":{"lat":{"description":"Location of a point on Earth north or south of the equator in decimal degrees","type":"number","format":"double","example":52.531677},"lng":{"description":"Location of a place on Earth east or west of the prime meridian in decimal degrees","type":"number","format":"double","example":13.381777},"lvl":{"description":"Level number in the indoor map model","type":"integer","example":1},"levelId":{"description":"Level Id in the indoor map model","type":"string","example":"level-12345"}},"example":{"lat":52.531677,"lng":13.381777,"lvl":-1,"levelId":"level-12345"}},"IndoorMapWaypointObject":{"description":"An indoor map location defining origin or destination for a route","type":"object","required":["lng","lat","indoorMapId","levelId"],"additionalProperties":false,"properties":{"lng":{"type":"number","minimum":-180,"maximum":180},"lat":{"type":"number","minimum":-90,"maximum":90},"indoorMapId":{"description":"Id of the indoor map","type":"string","pattern":"^indoormap-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-fA-F]{12}$"},"levelId":{"description":"Id of the level in the indoor map model","type":"string"}},"example":{"lat":52.531677,"lng":13.381777,"indoorMapId":"indoormap-00000000-0000-4000-a000-000000025556","levelId":"level-12345"}},"IndoorMapWaypointParameter":{"description":"An indoor map location defining origin or destination for a route\nFormat: `{lat},{lng}[;PlaceOptions][!WaypointOptions]`\n\n* Place: `{lat},{lng}`\n* PlaceOptions: `;option1=value1;option2=value2...`\n\n\nA waypoint consists of:\n* Exactly one place\n* Two place options `indoorMapId` and `levelId`\n* Two waypoint options `passThrough` and `stopDuration`\n\n* WaypointOptions: `!passThrough=false!stopDuration=30`\n\nSupported place options:\n* `indoorMapId`: string, id of the HERE indoor map\n* `levelId`: string, id of the level in the HERE indoor map\n\nSupported waypoint options:\n* `stopDuration`: desired duration for the stop, in seconds. The section arriving at this\n    via waypoint will have a `wait` post action reflecting the stopping time. Must be less than 50000.\n* `passThrough`: boolean. Controls waypoint behavior during route calculation:\n  * `passThrough=false` (default) : The route will stop at the via waypoint, creating a new route section.\n  * `passThrough=true` : The route will pass through the via waypoint without stopping.\n  + Introducing a stop at the waypoint.\n  + Splitting the route into sections.\n  + Changing the direction of travel.\n\nFollowing scenarios are not supported for `passThrough` parameter:\n  + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.\n  + Setting `passThrough=true` for `origin` or `destination` of a route.\n","type":"string"},"IndoorMapWildcardObject":{"description":"An indoor map location wildcard defining origins or destinations for a route\n","type":"object","required":["indoorMapId","wildcardType"],"additionalProperties":false,"properties":{"indoorMapId":{"description":"Id of the indoor map","type":"string","pattern":"^indoormap-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"wildcardType":{"description":"Type of wildcard in the indoor map model\n\nSupported wildcard type:\n* `ingress`: the indoor map’s entries (when used as destination) or exits (when used as origin)\n","type":"string","enum":["ingress"]}},"example":{"indoorMapId":"indoormap-00000000-0000-4000-a000-000000025556","wildcardType":"ingress"}},"IndoorMapWildcardOrWaypointObject":{"oneOf":[{"$ref":"#/components/schemas/IndoorMapWildcardObject"},{"$ref":"#/components/schemas/IndoorMapWaypointObject"}]},"IndoorMatrixRequestBody":{"type":"object","required":["origins"],"properties":{"origins":{"description":"List of waypoints defining origins of the routes in the matrix.","type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/IndoorMapWildcardOrWaypointObject"}},"destinations":{"description":"List of waypoints defining destinations of the routes in the matrix. When no `destinations` are specified, the matrix is assumed to be quadratic with `origins` used as destinations.\n","type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/IndoorMapWildcardOrWaypointObject"}},"transportMode":{"$ref":"#/components/schemas/TransportMode"},"pedestrian":{"$ref":"#/components/schemas/Pedestrian"},"avoid":{"$ref":"#/components/schemas/Avoid"},"routingMode":{"$ref":"#/components/schemas/RoutingMode"},"matrixAttributes":{"description":"Defines which of the `durations` and `lengths` attributes are returned in the response.","type":"array","items":{"type":"string","enum":["durations","lengths"]}}}},"IndoorPlace":{"description":"An indoor place represents a generic location relevant for the indoor route.","allOf":[{"type":"object","required":["type","id"],"properties":{"type":{"type":"string","enum":["indoor"]},"id":{"description":"Id of the indoor map","type":"string"}}},{"$ref":"#/components/schemas/BasePlace"}]},"IndoorRoute":{"description":"Describes a full journey to reach a given destination","type":"object","required":["sections"],"properties":{"sections":{"description":"A section of the indoor route","type":"array","items":{"$ref":"#/components/schemas/IndoorRouteSection"}},"notices":{"type":"array","description":"Contains a list of issues encountered during the processing of this response.","items":{"$ref":"#/components/schemas/Notice"}}}},"IndoorRouteSection":{"description":"One section of an indoor route","oneOf":[{"$ref":"#/components/schemas/RouteSection"}]},"LeaveAction":{"description":"Leave maneuver","allOf":[{"type":"object","required":["action","space"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["leave"]},"space":{"$ref":"#/components/schemas/Space"}}},{"$ref":"#/components/schemas/OffsetAction"}]},"LevelChangeAction":{"description":"An action in which a level is changed","allOf":[{"type":"object","required":["action","levelDelta"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["changeLevel"]},"levelConnector":{"description":"Over what kind of connection to change the level","type":"string","enum":["elevator","escalator","ramp","stairs","pedestrianRamp","carLift","driveRamp","elevatorBank"]},"levelDelta":{"description":"number of levels to change, positive for up, negative for down","type":"integer"}}},{"$ref":"#/components/schemas/OffsetAction"}]},"Notice":{"description":"A notice contains important notifications","type":"object","required":["code"],"properties":{"title":{"type":"string","description":"Human-readable notice description"},"code":{"type":"string","description":"Notice code"}}},"SectionNotice":{"description":"A notice contains important notifications","type":"object","required":["code"],"properties":{"title":{"type":"string","description":"Human-readable notice description","example":"Violated avoid elevator"},"code":{"type":"string","description":"Extensible enum: `violatedAvoidStairs` `violatedAvoidElevator` `violatedAvoidRamp` `violatedAvoidEscalator` `violatedAvoidPedestrianRamp` `violatedAvoidCarLift` `violatedAvoidDriveRamp` `violatedAvoidElevatorBank` `...`\n\nCurrently known codes (non-exhaustive: this list could be extended for new error situations):\n\n| Code                        | Description                                  | Severity |\n| --------------------------- | -------------------------------------------- | -------- |\n| violatedAvoidStairs         | Route violates avoid constraint for stairs   | info     |\n| violatedAvoidElevator       | Route violates avoid constraint for elevator | info     |\n| violatedAvoidRamp           | Route violates avoid constraint for ramp     | info     |\n| violatedAvoidEscalator      | Route violates avoid constraint for escalator| info     |\n| violatedAvoidPedestrianRamp | Route violates avoid constraint for pedestrian ramp | info |\n| violatedAvoidCarLift        | Route violates avoid constraint for car lift | info     |\n| violatedAvoidDriveRamp      | Route violates avoid constraint for drive ramp | info   |\n| violatedAvoidElevatorBank   | Route violates avoid constraint for elevator bank | info |\n","example":"violatedAvoidStairs","x-extensible-enum":["violatedAvoidStairs","violatedAvoidElevator","violatedAvoidRamp","violatedAvoidEscalator","violatedAvoidPedestrianRamp","violatedAvoidCarLift","violatedAvoidDriveRamp","violatedAvoidElevatorBank"]},"severity":{"$ref":"#/components/schemas/NoticeSeverity"},"details":{"type":"array","description":"Additional details about the section notice","items":{"$ref":"#/components/schemas/BaseNoticeDetail"}}}},"RouteResponseNotice":{"required":["code"],"type":"object","properties":{"title":{"type":"string","description":"Human-readable notice description.","example":"No route found"},"code":{"type":"string","description":"Extensible enum: `noRouteFound` `couldNotMatchOrigin` `couldNotMatchDestination` `noRouteFoundWithWaypoint` `couldNotMatchWaypoint` `violatedRouteHeadCondition` `violatedRouteTailCondition` `violatedEntireRouteCondition` `ignoredVehicleEnable` `ignoredVehicleSpeed` `ignoredVehicleAvoidFeatures` `violatedTransportMode` `...` \nCurrently known codes (non-exhaustive: this list could be extended for new error situations):\n\n| Code      | Description  | Severity |\n| --------- | ------- | ------- |\n| noRouteFound | No Route was found | critical |\n| couldNotMatchOrigin | Origin waypoint could not be matched | critical |\n| couldNotMatchDestination | Destination waypoint could not be matched | critical |\n| noRouteFoundWithWaypoint | No route available between given origin and destination with given waypoint | critical |\n| couldNotMatchWaypoint | Waypoint could  not be matched. Nearest routing node not found | critical |\n| violatedRouteHeadCondition | Cannot provide route with the given vehicle routeHead condition | info |\n| violatedRouteTailCondition | Cannot provide route with the given vehicle routeTail condition | info |\n| violatedEntireRouteCondition | Cannot provide route with the given vehicle entireRoute condition | info |\n| ignoredVehicleEnable | Vehicle enable option is ignored for the given transport mode | info |\n| ignoredVehicleSpeed | Vehicle speed is ignored for the given transport mode | info |\n| ignoredVehicleAvoidFeatures | LevelConnectors associated with vehicle are ignored which are received as a part of avoid features | info |\n| violatedTransportMode | Cannot provide route with the selected transport mode. | info |\n","example":"noRouteFound","x-extensible-enum":["noRouteFound","couldNotMatchOrigin","couldNotMatchDestination","noRouteFoundWithWaypoint","couldNotMatchWaypoint","violatedRouteHeadCondition","violatedRouteTailCondition","violatedEntireRouteCondition","ignoredVehicleEnable","ignoredVehicleSpeed","ignoredVehicleAvoidFeatures","violatedTransportMode"]},"severity":{"$ref":"#/components/schemas/NoticeSeverity"},"details":{"type":"array","description":"Additional details about the notice","items":{"$ref":"#/components/schemas/BaseNoticeDetail"}}},"description":"A notice contains important notifications."},"NoticeSeverity":{"type":"string","description":"Describes the impact a notice has on the resource to which the notice is attached.\n* critical - The notice must not be ignored, even if the type of notice is not known to the user. Any associated resource (e.g., route section) must not be used without further evaluation.\n* info - The notice is for informative purposes, but does not affect usability of the route.\n","enum":["critical","info"]},"BaseNoticeDetail":{"required":["type"],"type":"object","properties":{"title":{"type":"string","description":"Detail title"},"cause":{"type":"string","description":"Cause of the notice"},"type":{"type":"string","description":"Detail type. Each type of detail might contain extra attributes.\n\n**NOTE:** The list of possible detail types may be extended in the future.\nThe client application is expected to handle such a case gracefully.\n"}}},"OffsetAction":{"type":"object","required":["offset","length","duration"],"properties":{"offset":{"description":"Offset of a coordinate in the section's polyline","type":"integer"},"length":{"description":"Length in meters","type":"number"},"duration":{"description":"Estimated time to perform the action, in seconds","type":"number"}}},"Pedestrian":{"type":"object","properties":{"speed":{"description":"Walking speed in meters per second. Influences the duration of walking segments.","type":"number","format":"double","minimum":0.5,"maximum":2}}},"Vehicle":{"type":"object","properties":{"speed":{"description":"Vehicle speed in meters per second. Influences the duration of vehicle segments.","type":"number","format":"double","minimum":2,"maximum":5},"enable":{"description":"Option to enable vehicle usage at the start, end, or during the entire journey \n| Value | Purpose    |\n | -------  | ----------------- |\n | routeHead | To start the route with the given vehicle |\n | routeTail | To end the route with the given vehicle |\n | entireRoute | To travel entire journey with the given vehicle |\n","type":"string","enum":["routeHead","routeTail","entireRoute"]}}},"Space":{"type":"object","description":"Space information","required":["category","type"],"properties":{"category":{"description":"Describes the general category of the space","type":"string","example":"facility, structure, level connector"},"type":{"description":"Specifies the detailed classification of the space","type":"string","example":"room, building, stairs"},"name":{"description":"The display name of the space, typically shown in the map interface","type":"string","example":"Conference Room A"}}},"Action":{"description":"Action attached to a particular route section","oneOf":[{"$ref":"#/components/schemas/DepartAction"},{"$ref":"#/components/schemas/ArriveAction"},{"$ref":"#/components/schemas/ContinueAction"},{"$ref":"#/components/schemas/TurnAction"},{"$ref":"#/components/schemas/LevelChangeAction"},{"$ref":"#/components/schemas/LeaveAction"},{"$ref":"#/components/schemas/EnterAction"}],"discriminator":{"propertyName":"action","mapping":{"depart":"#/components/schemas/DepartAction","arrive":"#/components/schemas/ArriveAction","continue":"#/components/schemas/ContinueAction","turn":"#/components/schemas/TurnAction","uTurn":"#/components/schemas/TurnAction","changeLevel":"#/components/schemas/LevelChangeAction","leave":"#/components/schemas/LeaveAction","enter":"#/components/schemas/EnterAction"}}},"DepartureArrival":{"type":"object","description":"departure/arrival place","required":["place"],"properties":{"place":{"$ref":"#/components/schemas/Place"}}},"Place":{"description":"Place used in indoor routing","oneOf":[{"$ref":"#/components/schemas/IndoorPlace"}]},"RouteSection":{"description":"A section of an indoor route","type":"object","required":["type","departure","arrival","actions","polyline","summary","transport"],"properties":{"type":{"description":"Section type used by the client to identify what extensions to the BaseSection are available","type":"string","enum":["pedestrian","vehicle"]},"departure":{"$ref":"#/components/schemas/DepartureArrival"},"arrival":{"$ref":"#/components/schemas/DepartureArrival"},"actions":{"description":"Actions to be performed at or during a specific portion of a section\n\nAction offsets are the coordinate index in the polyline.\n","type":"array","items":{"$ref":"#/components/schemas/Action"}},"postActions":{"type":"array","description":"Actions that must be done after `arrival`.","items":{"$ref":"#/components/schemas/PostAction"}},"passthrough":{"type":"array","description":"List of via waypoints this section is passing through.\n\nEach via waypoint of the request that is a `passThrough=true` waypoint, appears as a\n`Passthrough` in the response. It appears in the section that starts with the closest\nnon-passthrough via specified before it or origin.\n\nThe passthrough vias appear in this list in the order they are traversed. They are\ntraversed in the order they are specified in the request.\n","items":{"$ref":"#/components/schemas/Passthrough"}},"polyline":{"$ref":"#/components/schemas/Polyline"},"summary":{"$ref":"#/components/schemas/Summary"},"transport":{"$ref":"#/components/schemas/Transport"},"notices":{"description":"Contains a list of issues related to this section of the route.\nThe codes take the form `violatedAvoid`*feature*.\n","type":"array","items":{"$ref":"#/components/schemas/SectionNotice"}}}},"Summary":{"type":"object","description":"Total values of key attributes for a particular route section. \nThis will return the sum of lengths and durations of all the actions including pre and post actions\n","required":["duration","length"],"properties":{"length":{"description":"Length in meters","type":"number"},"duration":{"description":"Estimated time for the route, in seconds","type":"number"}}},"Transport":{"type":"object","description":"Information about a transport","required":["mode"],"properties":{"mode":{"$ref":"#/components/schemas/TransportMode"}}},"Polyline":{"type":"string","description":"Line string in [Flexible Polyline](https://github.com/heremaps/flexible-polyline) format","example":"A05xgKuy2xCx9B7vUl0OhnR54EqSzpEl-HxjD3pBiGnyGi2CvwFsgD3nD4vB6e"},"RoutingMode":{"description":"Specifies which optimization is applied during route calculation.\n\n* `fast`: Route calculation from start to destination optimized by travel time.\n* `short`: Route calculation from start to destination disregarding any speed information.\n","type":"string","enum":["fast","short"],"default":"fast"},"TransportMode":{"description":"Mode of transport to be used for route calculation.","type":"string","enum":["pedestrian","car","taxi","scooter"]},"TurnAction":{"description":"An action in which a direction change is made","allOf":[{"type":"object","required":["action"],"properties":{"action":{"description":"The type of the action","type":"string","enum":["turn","uTurn"]},"direction":{"$ref":"#/components/schemas/TurnActionDirection"},"severity":{"$ref":"#/components/schemas/TurnActionSeverity"}}},{"$ref":"#/components/schemas/OffsetAction"}]},"TurnActionDirection":{"description":"Direction of the turn. Absent for 180° turns.","type":"string","enum":["right","left"]},"TurnActionSeverity":{"description":"Tightness of the turn. Optional in the `turn` action, unused by other actions.\n\n* `light`: indicates making a light turn\n* `quite`: indicates making a regular turn\n* `heavy`: indicates making a sharp turn\n","type":"string","enum":["light","quite","heavy"]},"Passthrough":{"required":["place"],"type":"object","properties":{"place":{"$ref":"#/components/schemas/Place"},"offset":{"type":"number","description":"Passthrough offsets are the coordinate index in the polyline."}},"description":"Describes a location and time the section is passing through."},"PostAction":{"oneOf":[{"$ref":"#/components/schemas/WaitAction"}]},"WaitAction":{"required":["action","duration"],"type":"object","properties":{"action":{"type":"string","description":"The type of the action.\n","enum":["wait"]},"duration":{"description":"Estimated duration of this action (in seconds). Actions last until the next action, or the end of the route in case of the last one.","allOf":[{"$ref":"#/components/schemas/Duration"}]},"instruction":{"type":"string","description":"Description of the action."}},"description":"A wait operation to be performed at or during a specific portion of a section.\n"},"Duration":{"type":"integer","description":"Duration in seconds.","example":198}},"headers":{"X-Correlation-Id":{"description":"Auto-generated ID, which uniquely identifies the request, available in the response. When contacting support with an inquiry regarding a specific request, provide the value of this header which will help troubleshooting the issue.","schema":{"type":"string","pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"},"example":"4d173a1e-6f1b-459b-b74f-23686354aaea"},"X-Request-Id":{"description":"User-provided id that can be used to trace a request or a group of requests sent to the service.","schema":{"type":"string","pattern":"^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}},"parameters":{"xCorrelationId":{"name":"X-Correlation-Id","in":"header","description":"Unique identifier used for end-to-end request tracing and log correlation across services.","schema":{"type":"string"}},"xRequestId":{"name":"X-Request-Id","in":"header","description":"User-provided token that can be used to trace a request or a group of requests sent to the service.","schema":{"type":"string"}},"avoid":{"name":"avoid","description":"Avoid routes that use certain features of the indoor map.","in":"query","required":false,"explode":true,"style":"deepObject","schema":{"$ref":"#/components/schemas/AvoidAsShallowObject"},"examples":{"features":{"summary":"Avoid features `stairs` and `ramp`","value":{"features":"stairs,ramp"}}}},"destination":{"name":"destination","description":"A destination is the final endpoint where a traveler arrives after traversing a path.\nIt is indoor map location defining destination for a route\n\nFormat: `IndoorMapWaypointParameter`\nWhich consist of\n* Coordinates: `lat,lng`\n* Indoor map id: `indoorMapId` string, id of the HERE indoor map\n* Level (floor) id : `levelId` string, id of the level in the HERE indoor map\n* Query parameter for destination as `{lat},{lng};indoorMapId={indoorMapId};levelId={levelId}`\n\nSupported place options:\n* `indoorMapId`: string, id of the HERE indoor map\n* `levelId`: string, id of the level in the HERE indoor map\n\nSupported waypoint options:\n* `stopDuration`: desired duration for the stop, in seconds. The section arriving at this\n    via waypoint will have a `wait` post action reflecting the stopping time. Must be less than 50000.\n\n* Note `destination` only supports `stopDuration` as waypoint option.\n\n* Query parameter for destination with waypoint option as `{lat},{lng};indoorMapId={indoorMapId};levelId={levelId}!stopDuration=30`\n","example":"52.5100,13.3351;indoorMapId=indoormap-00000000-0000-4000-a000-000000012345;levelId=level-67890","in":"query","required":true,"schema":{"$ref":"#/components/schemas/IndoorMapWaypointParameter"}},"origin":{"name":"origin","description":"An origin is the initial point where a traveler starts before traversing a route to a destination.\nIt is indoor map location defining origin for a route\n\nFormat: `IndoorMapWaypointParameter`\nWhich consist of\n* Coordinates: `lat,lng`\n* Indoor map id: `indoorMapId` string, id of the HERE indoor map\n* Level (floor) id : `levelId` string, id of the level in the HERE indoor map\n* Query parameter for origin as `{lat},{lng};indoorMapId={indoorMapId};levelId={levelId}`\n\nSupported place options:\n* `indoorMapId`: string, id of the HERE indoor map\n* `levelId`: string, id of the level in the HERE indoor map\n\n* Note `origin` does not support any WaypointOptions. They are available for `via` and `destination` waypoints.\n","example":"52.5300,13.3851;indoorMapId=indoormap-00000000-0000-4000-a000-000000012345;levelId=level-67890","in":"query","required":true,"schema":{"$ref":"#/components/schemas/IndoorMapWaypointParameter"}},"via":{"name":"via","description":"A via point in the waypoint between origin and destination from where a traveler wants to go through.\n\nFormat: `IndoorMapWaypointParameter`\nWhich consist of\n* Coordinates: `lat,lng`\n* Indoor map id: `indoorMapId` string, id of the HERE indoor map\n* Level (floor) id : `levelId` string, id of the level in the HERE indoor map\n* Query parameter for via as `{lat},{lng};indoorMapId={indoorMapId};levelId={levelId}`\n\nSupported place options:\n* `indoorMapId`: string, id of the HERE indoor map\n* `levelId`: string, id of the level in the HERE indoor map\n\nSupported waypoint options:\n* `stopDuration`: desired duration for the stop, in seconds. The section arriving at this\n    via waypoint will have a `wait` post action reflecting the stopping time. Must be less than 50000.\n* `passThrough`: boolean. Controls waypoint behavior during route calculation:\n  * `passThrough=false` (default) : The route will stop at the via waypoint, creating a new route section.\n  * `passThrough=true` : The route will pass through the via waypoint without stopping.\n  + Introducing a stop at the waypoint.\n  + Splitting the route into sections.\n  + Changing the direction of travel.\n\nFollowing scenarios are not supported for `passThrough` parameter:\n  + Setting both `stopDuration` to a value greater than 0 and `passThrough=true`.\n  + Setting `passThrough=true` for `origin` or `destination` of a route.\n\n* Query parameter for via with waypoint options as `{lat},{lng};indoorMapId={indoorMapId};levelId={levelId}!passThrough=false!stopDuration=30`\n","example":"52.5300,13.3851;indoorMapId=indoormap-00000000-0000-4000-a000-000000012345;levelId=level-67890!passThrough=false!stopDuration=30","in":"query","schema":{"type":"array","maxItems":5,"items":{"$ref":"#/components/schemas/IndoorMapWaypointParameter"}}},"pedestrian":{"name":"pedestrian","description":"Specifies options for pedestrian routing.","in":"query","explode":true,"style":"deepObject","schema":{"$ref":"#/components/schemas/Pedestrian"}},"vehicle":{"name":"vehicle","description":"Specifies options for vehicle routing.","in":"query","explode":true,"style":"deepObject","schema":{"$ref":"#/components/schemas/Vehicle"}},"routingMode":{"name":"routingMode","description":"Specifies which optimization is applied during route calculation.\n\n* `fast`: Route calculation from start to destination optimized by travel time.\n* `short`: Route calculation from start to destination disregarding any speed information.\n","in":"query","required":false,"schema":{"$ref":"#/components/schemas/RoutingMode"}},"transportMode":{"name":"transportMode","description":"Mode of transport to be used for route calculation.","in":"query","required":true,"schema":{"$ref":"#/components/schemas/TransportMode"}}},"responses":{"Error400Response":{"description":"API response in case of bad request","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"400":{"summary":"Example response on invalid request data","value":{"status":400,"title":"Bad request","code":"E610001","cause":"The request was rejected because it did not pass validation.","action":"Please check your request data.","correlationId":"fcdb02bc-775d-4d45-8203-d573f4533db3","details":[{"source":".query.transportMode","message":"should have required property 'transportMode'"}]}}}}}},"Error401Response":{"description":"API response in case of unauthorized access","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthError"},"examples":{"Gateway401":{"value":{"error":"Unauthorized","error_description":"No credentials found"}}}}}},"Error403Response":{"description":"API response in case of forbidden access","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthError"},"examples":{"Service403":{"value":{"error":"Forbidden","error_description":"Your credentials do not allow you access to the requested resource."}}}}}},"Error404Response":{"description":"API response in case of unavailable resource","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"examples":{"404":{"summary":"Example response on unavailable resource","value":{"status":404,"title":"Not Found","code":"E610006","cause":"The requested resource is not available to you.","action":"Please check your request data.","correlationId":"0ab20390-96a9-11eb-93fb-393810a591b5"}}}}}},"Error429Response":{"description":"API response in case of too many requests","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"status":429,"code":"E616429","title":"Too many requests","cause":"Request rate limit reached","action":"Retry later, lower the request rate","correlationId":"efefe455-d2e3-4e23-86aa-4e9a8a1680d4"}}}},"Error500Response":{"description":"API response in case of internal server error","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"status":500,"code":"E616503","title":"Internal server error","cause":"Internal server error","action":"Retry later","correlationId":"efefe455-d2e3-4e23-86aa-4e9a8a1680d4"}}}},"Error502Response":{"description":"API response in case of bad gateway","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"status":502,"code":"E616503","title":"Bad gateway","cause":"Bad gateway","action":"Retry later","correlationId":"efefe455-d2e3-4e23-86aa-4e9a8a1680d4"}}}},"Error503Response":{"description":"API response in case of service unavailable","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"status":503,"code":"E616503","title":"Service not available","cause":"Service is currently unavailable","action":"Retry later","correlationId":"efefe455-d2e3-4e23-86aa-4e9a8a1680d4"}}}},"HealthResponse":{"description":"Health response","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","required":["status"],"properties":{"status":{"description":"Health status of the API","type":"string"}}},"example":{"status":"ok"}}}},"OpenApiResponse":{"description":"API specification in OpenAPI 3 format","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/x-yaml":{"schema":{"type":"string"}},"text/x-yaml":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object"}}}},"IndoorMatrixResponse":{"description":"Indoor matrix response","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","required":["matrix"],"properties":{"matrix":{"description":"Costs of possible indoor routes","type":"object","properties":{"durations":{"description":"Matrix of route durations (in seconds). Only returned if `durations` is specified in the `matrixAttributes` request parameter.\n","type":"array","items":{"type":"number"}},"lengths":{"description":"Matrix of route lengths (in meters). Only returned if `lengths` is specified in the `matrixAttributes` request parameter.\n","type":"array","items":{"type":"number"}},"errorCodes":{"description":"Contains error codes for entries in the matrix if there is at least one unsuccessful calculation.\n\n| Value |  Reason                                                                                        |\n|-------|------------------------------------------------------------------------------------------------|\n| 0     | Calculation successful                                                                         |\n| 1     | Graph disconnected (there is no route between `i` and `j`)                                     |\n| 2     | Matching failed (could not match `i` or `j` to a location where routing could start or end, resp.) |\n| 3     | Route was calculated but violates requested options (no feasible route without violations between `i` and `j` was found). Potential violations: a requested avoid feature has to be used |\n| 99    | Unknown error                                                                                  |\n","type":"array","items":{"type":"integer","format":"int32"}},"origins":{"description":"When an indoor map location wildcard was supplied, the resolved waypoints are returned.","type":"array","items":{"$ref":"#/components/schemas/IndoorMapWaypointObject"}},"destinations":{"description":"When an indoor map location wildcard was supplied, the resolved waypoints are returned.","type":"array","items":{"$ref":"#/components/schemas/IndoorMapWaypointObject"}}}}}}}}},"IndoorRouteResponse":{"description":"Indoor route response","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","required":["routes"],"properties":{"routes":{"description":"List of possible indoor routes","type":"array","items":{"$ref":"#/components/schemas/IndoorRoute"}},"notices":{"type":"array","description":"Contains a list of issues related to this route calculation.\nPlease refer to the `code` attribute for possible values.\n","items":{"$ref":"#/components/schemas/RouteResponseNotice"}}}}}}},"VersionResponse":{"description":"Version response","headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}},"content":{"application/json":{"schema":{"type":"object","required":["apiVersion"],"properties":{"apiVersion":{"description":"Full version of the API","type":"string"}}},"example":{"apiVersion":"1.0.0"}}}}}}}