Every API here is available over the APIs.io API and to AI agents over MCP.
{"openapi":"3.0.2","info":{"title":"Tour Planning API v3","description":"The HERE Tour Planning API enables you to dynamically optimize routes for multiple vehicles visiting a set of locations, considering real-life constraints such as limited vehicle capacity and delivery time windows. \nThis provides the following benefits: \n * Improving fleet utilization by finding an economical stop sequence to service your locations. \n * Solving complex vehicle routing problems between multiple locations for an entire fleet of vehicles. \n * Considering multiple constraints that can be defined when specifying the problem.\n\nThe HERE Touring Planning API returns a cost-effective sequence to visit all stops in your daily plan, providing a practical solution for optimized route planning.\n","version":"3.61.1","termsOfService":"https://developer.here.com/terms-and-conditions","license":{"name":"HERE Documentation License","url":"https://legal.here.com/en-gb/terms/documentation-license"}},"externalDocs":{"description":"The Developer guide and Release notes are available here.","url":"https://docs.here.com/tour-planning/docs/introduction-tour-planning"},"security":[{"Bearer":[]},{"ApiKey":[]}],"tags":[{"name":"System","description":"Endpoints to retrieve service information, including service version and health status."},{"name":"CORS","description":"Endpoints for Cross-Origin Resource Sharing (CORS)."},{"name":"Synchronous","description":"Endpoints that support synchronous request flows, allowing for \nimmediate processing and responses to API requests.\n"},{"name":"Asynchronous","description":"Endpoints that support asynchronous request flows, allowing for \ndelayed processing and responses to API requests.\n"}],"paths":{"/problems":{"options":{"summary":"CORS support","description":"Enable Cross-Origin Resource Sharing (CORS) by returning the appropriate headers.\n","tags":["CORS"],"responses":{"200":{"description":"Default response for CORS method","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"post":{"summary":"Submit a Vehicle Routing Problem to solve it synchronously","description":"Solve a [vehicle routing problem](https://docs.here.com/tour-planning/docs/problem) synchronously by optimizing vehicle routes and schedules for \njobs (deliveries or pickups) from a depot, including constraints like vehicle capacity, job demand, time windows, and required skills.\n","tags":["Synchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"responses":{"200":{"description":"The solution to the vehicle routing problem (VRP) has been successfully calculated.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Solution"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"400":{"description":"The input parameters or configuration settings for the vehicle routing problem are invalid or incomplete.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"[Detailed information](https://docs.here.com/tour-planning/docs/problem) necessary to compute optimized routes, encompassing fleet configuration, including \nvehicle types, profiles, costs, shifts, and capacity, as well as a plan detailing the jobs to be completed.\n","required":true}}},"/problems/async":{"options":{"summary":"CORS support","description":"Enable CORS by returning correct headers.\n","tags":["CORS"],"responses":{"200":{"description":"Default response for the CORS method.","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"post":{"operationId":"submitProblemAsync","summary":"Submit a Vehicle Routing Problem to solve it asynchronously.","description":"Solve a [vehicle routing problem](https://docs.here.com/tour-planning/docs/problem) asynchronously by optimizing vehicle routes and schedules for jobs \n(deliveries or pickups) from a depot, including constraints like vehicle capacity, job demand, time windows, \nand required skills.\n","tags":["Asynchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"requestBody":{"description":"Detailed information necessary to compute optimized routes, including fleet configuration details such as \nvehicle types, profiles, costs, shifts, and capacity, as well as a plan detailing the jobs to be completed. \nFor more information, see [Problem](https://docs.here.com/tour-planning/docs/problem).\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"required":true},"responses":{"202":{"description":"The problem has been successfully submitted and is being processed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncActionSubmissionResult"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"400":{"description":"The input parameters or configuration settings for the vehicle routing problem are invalid or incomplete.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"},"503":{"description":"The service is unavailable and the server is not ready to process the request. \nTry again later.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ServiceErrorResponse"}}}}}}}},"/status/{statusId}":{"options":{"summary":"CORS support","description":"Enable CORS by returning correct headers.\n","tags":["CORS"],"parameters":[{"in":"path","name":"statusId","required":true,"schema":{"$ref":"#/components/schemas/ProblemId"}}],"responses":{"200":{"description":"Default response for the CORS method.","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"get":{"operationId":"getStatus","summary":"Get status update by Id","description":"Provides an interface to retrieve the status ID of an asynchronous request.","tags":["Asynchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"in":"path","name":"statusId","required":true,"schema":{"type":"string"}},{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"responses":{"200":{"description":"Displays the current status of the asynchronous operation. If successful, the response includes the \nsolution's resource URL. If the request fails, the response contains an error message.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncActionCompletionStatus"},"examples":{"Pending":{"summary":"A response example for an asynchronous operation in the `pending` state.","value":{"status":"pending"}},"InProgress":{"summary":"A response example for an asynchronous operation in the `in progress` state.","value":{"status":"inProgress"}},"Success":{"summary":"A response example for a successfully completed asynchronous operation.","value":{"status":"success","resource":{"resourceId":"87aec2ce-b697-11e8-96f8-529269fb1459","href":"https://<endpoint-url>/v3/problems/87aec2ce-b697-11e8-96f8-529269fb1459/solution"}}},"Failure":{"summary":"A response example for an asynchronous operation completed with an error.","value":{"status":"failure","error":{"message":"There was an error solving the problem"}}}}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"404":{"description":"The specified status ID of the asynchronous request was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ResourceErrorResponse"}}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"}}}},"/problems/{problemId}/solution":{"options":{"summary":"CORS support","description":"Enable CORS by returning correct headers.\n","tags":["CORS"],"parameters":[{"in":"path","name":"problemId","required":true,"schema":{"$ref":"#/components/schemas/ProblemId"}}],"responses":{"200":{"description":"Default response for the CORS method.","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"get":{"operationId":"getSolution","summary":"Get solution by problem or status Id","description":"Retrieve a solution for a previously submitted vehicle routing problem.","tags":["Asynchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"in":"path","name":"problemId","description":"A unique identifier used to track the status of a solution calculation and for downloading the solution \nresult for a specific problem.\n","required":true,"schema":{"$ref":"#/components/schemas/ProblemId"}},{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"responses":{"200":{"description":"A [solution](https://docs.here.com/tour-planning/docs/solution) was found for the submitted problem. The response includes the details of the solution, such as \nthe optimized route and any relevant metrics.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Solution"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"404":{"description":"The specified problem ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ResourceErrorResponse"}}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"422":{"description":"The solver was unable to find a solution for the submitted problem, for example, due to too restrictive \nor conflicting constraints, making it impossible to generate a viable route. \nReview the problem parameters and try again.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/SolverErrorResponse"}}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"}}}},"/problems/{problemId}/cancel":{"options":{"summary":"CORS support","description":"Enable CORS by returning correct headers.\n","tags":["CORS"],"parameters":[{"in":"path","name":"problemId","required":true,"schema":{"$ref":"#/components/schemas/ProblemId"}}],"responses":{"200":{"description":"Default response for the CORS method.","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"put":{"operationId":"cancelProblem","summary":"Cancel a problem by problem or status Id","description":"Cancel a previously submitted vehicle routing problem. This action stops the solver from processing \nthe problem and prevents any further updates or solutions from being generated.\n","tags":["Asynchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"in":"path","name":"problemId","description":"A unique identifier used to track the status of a solution calculation and for downloading the solution \nresult for a specific problem.\n","required":true,"schema":{"$ref":"#/components/schemas/ProblemId"}},{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"responses":{"200":{"description":"The asynchronous calculation for the problem has been canceled. This means the solver has stopped \nprocessing the calculation, and no further updates or solutions are allowed.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncProblemCancellationStatus"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"404":{"description":"The specified problem ID was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ResourceErrorResponse"}}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"409":{"description":"The specified problem cannot be canceled. This may be due to the problem already being processed or \ncompleted, or because it does not exist.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"429":{"$ref":"#/components/responses/TooManyRequestsResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"}}}},"/matrices":{"options":{"summary":"CORS support","description":"Enable CORS by returning correct headers.\n","tags":["CORS"],"responses":{"200":{"description":"Default response for the CORS method.","headers":{"Access-Control-Allow-Headers":{"schema":{"type":"string"}},"Access-Control-Allow-Methods":{"schema":{"type":"string"}},"Access-Control-Allow-Origin":{"schema":{"type":"string"}}}}}},"post":{"x-maturity":"alpha","summary":"**ALPHA** Upload a Routing Matrix","description":"**ALPHA** Upload a [routing matrix](https://docs.here.com/tour-planning/docs/custom-matrix) for use in subsequent asynchronous requests. \nTo gain access to this endpoint, contact your regional HERE representative.\n","tags":["Asynchronous"],"security":[{"ApiKey":[]},{"Bearer":[]}],"parameters":[{"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.","required":false,"style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}],"responses":{"201":{"description":"The routing matrix has been successfully uploaded. You can now use this matrix in subsequent requests \nto solve routing problems asynchronously.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatrixUploadResponse"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"400":{"description":"The matrix formulation is incorrect. This issue might be caused by incorrect input parameters or data misalignment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"headers":{"X-Correlation-Id":{"$ref":"#/components/headers/X-Correlation-Id"},"X-Request-Id":{"$ref":"#/components/headers/X-Request-Id"}}},"401":{"$ref":"#/components/responses/UnauthenticatedErrorResponse"},"403":{"$ref":"#/components/responses/ForbiddenErrorResponse"},"500":{"$ref":"#/components/responses/ServerErrorResponse"}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LargeMatrix"}}},"description":"A [routing matrix](https://docs.here.com/tour-planning/docs/custom-matrix) tailored for a specific vehicle profile. This matrix includes such data as travel times and \ndistances between various locations, optimized for the vehicle's characteristics. The matrix is used in \nsubsequent requests to solve routing problems asynchronously.\n","required":true}}},"/version":{"get":{"operationId":"getVersion","summary":"Full version of the API.","description":"Retrieve the current version of the service.","tags":["System"],"security":[],"responses":{"200":{"description":"The current version of the service.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionResponse"}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Health status of the service.","description":"Retrieve the current health status of the service.","tags":["System"],"security":[],"responses":{"200":{"description":"The current health status of the service.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","name":"apikey","in":"query","description":"The API authentication key. For more information on how to get an API key, \nsee [Identity and Access Management - Developer Guide](https://docs.here.com/identity-and-access-management/docs/plat-using-apikeys).\n"},"Bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"This token is obtained from a separate endpoint using client credentials and an OAuth 1.0a HMAC-SHA256 signed request.\nFor more information on how to get a bearer token, see [OAuth 2.0 tokens](https://docs.here.com/identity-and-access-management/docs/how-to-authorize-with-oauth-20).\n"}},"responses":{"UnauthenticatedErrorResponse":{"description":"The API key or authentication credentials are invalid or missing.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/UnauthenticatedErrorResponse"}}}}},"ForbiddenErrorResponse":{"description":"The API key or authentication credentials do not allow you to access the requested resource.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ForbiddenErrorResponse"}}}}},"ServerErrorResponse":{"description":"An internal server error has occurred that prevents the API from processing the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/ServerErrorResponse"}}}}},"TooManyRequestsResponse":{"description":"The number of API requests has exceeded the allowed limit within a specified time frame.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TooManyRequestsResponse"},"examples":{"errorResponseExample":{"$ref":"#/components/examples/TooManyRequestsResponse"}}}},"headers":{"Retry-After":{"description":"The value (in seconds) that indicates how long you must wait before making additional requests.","schema":{"type":"integer","example":5}},"X-RateLimit-Limit":{"description":"Indicates the maximum number of requests you can make within the specified time window (in seconds), \nformatted as \"number, number; w=window\".\n","schema":{"type":"string","example":"50, 50;w=10"}},"X-RateLimit-Reset":{"description":"Indicates (in seconds) how long you must wait before sending more requests.","schema":{"type":"integer","example":5}}}}},"headers":{"X-Correlation-Id":{"description":"An auto-generated identifier that uniquely distinguishes each request.","style":"simple","explode":false,"schema":{"type":"string"},"example":"4199533b-6290-41db-8d79-edf4f4019a74"},"X-Request-Id":{"description":"User-provided token that can be used to trace a request or a group of requests sent to the service.","style":"simple","explode":false,"schema":{"type":"string"},"example":"8230d7ad-3f1c-4191-a8dd-f3c42026da89"}},"schemas":{"Activity":{"description":"An activity is defined as a planned task to be performed at a specific location and time within a stop on a tour.\nEach activity has properties like `jobId`, `type`, `location`, `time`, and `jobTag`. The `type` property\nspecifies the activity type, for example, `pickup` or `delivery`.\n\n**Note**: If you omit location or time from the activity definition, then the service uses the values\ndefined for the parent stop instead.","properties":{"compartment":{"allOf":[{"$ref":"#/components/schemas/Id"}],"description":"**ALPHA** Compartment where the activity load is allocated, empty if compartments are not used","x-maturity":"alpha"},"jobId":{"allOf":[{"$ref":"#/components/schemas/Id"}],"description":"A unique identifier for a job, provided when submitting a problem request. It allows tracking\nand retrieval of specific job-related information.\n\n**Note**: Do not include any personal information within the `JobId`. For example, avoid using a license plate number that could\nbe used to identify the driver."},"jobTag":{"allOf":[{"$ref":"#/components/schemas/PlaceTag"}],"description":"Optionally, allows adding extra information related to a specific job for easier identification or categorization.\nFor example, you could tag jobs based on the time of day they need to be delivered, such\nas `\"morning-delivery\"`.\n\n**Note**: Do not include any personal information within the `JobTag`. For example, avoid using a\nlicense plate number that could be used to identify the driver."},"location":{"$ref":"#/components/schemas/Location"},"notices":{"description":"A list of notices that provide additional information about the request. For example, these notices might\ninclude suggestions on how to improve the problem formulation.","items":{"$ref":"#/components/schemas/Notice"},"type":"array"},"time":{"$ref":"#/components/schemas/Interval"},"type":{"$ref":"#/components/schemas/ActivityType"}},"required":["jobId","type"],"type":"object"},"ActivityType":{"description":"The available types of planned tasks to be performed at a specific location and time as part of a stop.","enum":["departure","arrival","pickup","delivery","break","drivingRestTime","workingRestTime","reload","pudo","dutyDrivingRestTime","dutyWorkingRestTime","recharge","backToVehicle"],"example":"delivery","type":"string"},"AdvancedObjective":{"discriminator":{"mapping":{"balanceActivities":"#/components/schemas/BalanceActivities","balanceDistance":"#/components/schemas/BalanceDistance","balanceDuration":"#/components/schemas/BalanceDuration","balanceMaxLoad":"#/components/schemas/BalanceMaxLoad","maximizePriorityJobs":"#/components/schemas/MaximizePriorityJobs","maximizeTerritoryJobs":"#/components/schemas/MaximizeTerritoryJobs","maximizeTours":"#/components/schemas/MaximizeTours","minimizeCost":"#/components/schemas/MinimizeCost","minimizeDistance":"#/components/schemas/MinimizeDistance","minimizeDuration":"#/components/schemas/MinimizeDuration","minimizeSoftTimeWindowViolations":"#/components/schemas/MinimizeSoftTimeWindowViolations","minimizeTourOverlap":"#/components/schemas/MinimizeTourOverlap","minimizeTours":"#/components/schemas/MinimizeTours","minimizeUnassigned":"#/components/schemas/MinimizeUnassigned","optimizeTaskOrder":"#/components/schemas/OptimizeTaskOrder","optimizeTaskPosition":"#/components/schemas/OptimizeTaskPosition","serveInClusters":"#/components/schemas/ServeInClusters","tieBreak":"#/components/schemas/TieBreak","tourOrder":"#/components/schemas/TourOrder","visuallyAppealingTours":"#/components/schemas/VisuallyAppealingTours"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/MinimizeUnassigned"},{"$ref":"#/components/schemas/MinimizeCost"},{"$ref":"#/components/schemas/MinimizeTours"},{"$ref":"#/components/schemas/MaximizeTours"},{"$ref":"#/components/schemas/MinimizeDistance"},{"$ref":"#/components/schemas/MinimizeDuration"},{"$ref":"#/components/schemas/BalanceMaxLoad"},{"$ref":"#/components/schemas/BalanceActivities"},{"$ref":"#/components/schemas/BalanceDistance"},{"$ref":"#/components/schemas/BalanceDuration"},{"$ref":"#/components/schemas/MaximizePriorityJobs"},{"$ref":"#/components/schemas/TourOrder"},{"$ref":"#/components/schemas/MaximizeTerritoryJobs"},{"$ref":"#/components/schemas/VisuallyAppealingTours"},{"$ref":"#/components/schemas/OptimizeTaskPosition"},{"$ref":"#/components/schemas/MinimizeTourOverlap"},{"$ref":"#/components/schemas/ServeInClusters"},{"$ref":"#/components/schemas/TieBreak"},{"$ref":"#/components/schemas/MinimizeSoftTimeWindowViolations"},{"$ref":"#/components/schemas/OptimizeTaskOrder"}],"x-maturity":"alpha"},"AsTieBreakObjective":{"discriminator":{"mapping":{"balanceActivities":"#/components/schemas/BalanceActivities","balanceDistance":"#/components/schemas/BalanceDistance","balanceDuration":"#/components/schemas/BalanceDuration","balanceMaxLoad":"#/components/schemas/BalanceMaxLoad","maximizePriorityJobs":"#/components/schemas/MaximizePriorityJobs","maximizeTerritoryJobs":"#/components/schemas/MaximizeTerritoryJobs","minimizeCost":"#/components/schemas/MinimizeCost","minimizeDistance":"#/components/schemas/MinimizeDistance","minimizeDuration":"#/components/schemas/MinimizeDuration","minimizeSoftTimeWindowViolations":"#/components/schemas/MinimizeSoftTimeWindowViolations","minimizeTourOverlap":"#/components/schemas/MinimizeTourOverlap","optimizeTaskPosition":"#/components/schemas/OptimizeTaskPosition","serveInClusters":"#/components/schemas/ServeInClusters"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/MinimizeCost"},{"$ref":"#/components/schemas/MinimizeDistance"},{"$ref":"#/components/schemas/MinimizeDuration"},{"$ref":"#/components/schemas/MinimizeTourOverlap"},{"$ref":"#/components/schemas/BalanceMaxLoad"},{"$ref":"#/components/schemas/BalanceActivities"},{"$ref":"#/components/schemas/BalanceDistance"},{"$ref":"#/components/schemas/BalanceDuration"},{"$ref":"#/components/schemas/ServeInClusters"},{"$ref":"#/components/schemas/MaximizePriorityJobs"},{"$ref":"#/components/schemas/OptimizeTaskPosition"},{"$ref":"#/components/schemas/MinimizeSoftTimeWindowViolations"},{"$ref":"#/components/schemas/MaximizeTerritoryJobs"}],"x-maturity":"alpha"},"AsyncActionCompletionStatus":{"description":"Represents the response body with the problem calculation status, returned after \nsubmitting a request for the status of an asynchronous problem calculation.\n","properties":{"error":{"description":"Provides detailed information about the error that occurred if the asynchronous operation was not successful.\n","properties":{"code":{"example":"E613000","type":"string"},"message":{"example":"There was an error solving the problem","type":"string"}},"type":"object"},"resource":{"description":"If the asynchronous request completes successfully, the service provides a `resourceId` to identify the corresponding solution. Use the `resourceId` \nto [retrieve the calculated solution](https://docs.here.com/tour-planning/docs/quick-start#download-the-solution) for \nyour routing problem.\n","properties":{"href":{"description":"Use this URL to request the [solution](https://docs.here.com/tour-planning/docs/solution) \nof a vehicle routing problem.\n","example":"https://<endpoint-url>/v3/problems/87aec2ce-b697-11e8-96f8-529269fb1459/solution","type":"string"},"resourceId":{"example":"87aec2ce-b697-11e8-96f8-529269fb1459","type":"string"}},"type":"object"},"status":{"enum":["pending","inProgress","failure","success","canceled"],"example":"success","type":"string"}},"required":["status"],"type":"object"},"AsyncActionSubmissionResult":{"description":"The response body containing the request status UUID and the status update URL \nused to track the completion status of a valid asynchronous problem that you submitted for calculation.\n","properties":{"href":{"description":"Status update URL. \nUse this URL when querying the calculation status of the corresponding problem. \nContains the request status UUID.\n","example":"https://<endpoint-url>/v3/status/87aec2ce-b697-11e8-96f8-529269fb1459","type":"string"},"statusId":{"description":"Request status UUID. \nThe UUID is included in the status update URL for \nquerying the calculation status of the corresponding problem.\n","example":"87aec2ce-b697-11e8-96f8-529269fb1459","type":"string"}},"required":["statusId","href"],"type":"object"},"AsyncProblemCancellationStatus":{"description":"Represents the response body returned after submitting a problem cancellation request.\n","properties":{"ended":{"example":"2021-01-01T12:01:00Z","format":"date-time","type":"string"},"id":{"$ref":"#/components/schemas/ProblemId"},"started":{"example":"2021-01-01T12:00:00Z","format":"date-time","type":"string"},"status":{"enum":["canceled"],"example":"canceled","type":"string"}},"required":["id","status","started","ended"],"type":"object"},"AuthErrorResponse":{"properties":{"error":{"description":"Error message corresponding to the status code.","example":"Unauthorized","type":"string"},"error_description":{"description":"Detailed information about authentication or authorization errors.","example":"Invalid client credentials","type":"string"}},"required":["error","error_description"],"type":"object"},"AvoidArea":{"description":"Defines an explicit area to avoid/exclude when calculating the routes.\nAreas to be avoided/excluded can be specified by boundingBoxes or polygons (as encoded polyline or as list of geopts ).\n\nNotes:\n* Maximum count of polygons is 20. The combined total of boundingBoxes and polygons has a maximum limit of 250.\n* Minimum count of coordinates in any single polygon is 3. If less the corresponding error will be returned.\n* Maximum count of coordinates in any single polygon is 16. If more the corresponding error will be returned.\n* Self-intersecting polygons are not supported. If they are present in the request, the corresponding error will be returned.","discriminator":{"mapping":{"boundingBox":"#/components/schemas/BoundingBoxArea","encodedPolygon":"#/components/schemas/EncodedPolygonArea","polygon":"#/components/schemas/PolygonArea"},"propertyName":"type"},"oneOf":[{"$ref":"#/components/schemas/BoundingBoxArea"},{"$ref":"#/components/schemas/PolygonArea"},{"$ref":"#/components/schemas/EncodedPolygonArea"}]},"AvoidFeatures":{"description":"A routing feature to avoid during route calculation. Available avoid feature options:\n * `tollRoad`\n * `m
# --- truncated at 32 KB (199 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/here/refs/heads/main/openapi/here-tour-planning-v3-openapi.yml