{"openapi":"3.1.0","info":{"title":"Apizie","version":"2.0.0","description":"One API key, one envelope, many public data sources."},"servers":[{"url":"https://apizie.tech"}],"security":[{"ApiKeyAuth":[]}],"paths":{"/v1/places:graphhopper/solve-clustering-problem":{"post":{"operationId":"places_graphhopper_solve_clustering_problem","summary":"POST Cluster Endpoint","description":"POST /cluster","tags":["places"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["body"],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/async-clustering-problem":{"post":{"operationId":"places_graphhopper_async_clustering_problem","summary":"Batch Cluster Endpoint","description":"POST /cluster/calculate","tags":["places"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["body"],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-cluster-solution":{"get":{"operationId":"places_graphhopper_get_cluster_solution","summary":"GET Batch Solution Endpoint","description":"GET /cluster/solution/{jobId}","tags":["places"],"parameters":[{"name":"jobId","in":"query","required":true,"description":"Request solution with jobId","schema":{"type":"string","description":"Request solution with jobId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-geocode":{"get":{"operationId":"places_graphhopper_get_geocode","summary":"Geocoding Endpoint","description":"GET /geocode","tags":["places"],"parameters":[{"name":"q","in":"query","required":false,"description":"If you do forward geocoding, this is `required` and is a textual description of the address you are looking for.","schema":{"type":"string","description":"If you do forward geocoding, this is `required` and is a textual description of the address you are looking for."}},{"name":"locale","in":"query","required":false,"description":"Display the search results for the specified locale. Currently French (fr), English (en), German (de) and Italian (it) are supported. If…","schema":{"type":"string","default":"en","description":"Display the search results for the specified locale. Currently French (fr), English (en), German (de) and Italian (it) are supported. If…"}},{"name":"limit","in":"query","required":false,"description":"Specify the maximum number of results to return","schema":{"type":"integer","default":10,"description":"Specify the maximum number of results to return"}},{"name":"reverse","in":"query","required":false,"description":"It is `required` to be `true` if you want to do a reverse geocoding request. If it is `true`, `point` must be defined as well, and `q`…","schema":{"type":"boolean","default":false,"description":"It is `required` to be `true` if you want to do a reverse geocoding request. If it is `true`, `point` must be defined as well, and `q`…"}},{"name":"debug","in":"query","required":false,"description":"If `true`, the output will be formatted.","schema":{"type":"boolean","default":false,"description":"If `true`, the output will be formatted."}},{"name":"point","in":"query","required":false,"description":"_Forward geocoding_: The location bias in the format 'latitude,longitude' e.g. point=45.93272,11.58803. _Reverse geocoding_: The location…","schema":{"type":"string","description":"_Forward geocoding_: The location bias in the format 'latitude,longitude' e.g. point=45.93272,11.58803. _Reverse geocoding_: The location…"}},{"name":"provider","in":"query","required":false,"description":"The provider parameter is currently under development and can fall back to `default` at any time. The intend is to provide alternatives to…","schema":{"type":"string","default":"default","description":"The provider parameter is currently under development and can fall back to `default` at any time. The intend is to provide alternatives to…"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-isochrone":{"get":{"operationId":"places_graphhopper_get_isochrone","summary":"Isochrone Endpoint","description":"GET /isochrone","tags":["places"],"parameters":[{"name":"point","in":"query","required":true,"description":"Specify the start coordinate","schema":{"type":"string","description":"Specify the start coordinate"}},{"name":"time_limit","in":"query","required":false,"description":"Specify which time the vehicle should travel. In seconds.","schema":{"type":"integer","default":600,"description":"Specify which time the vehicle should travel. In seconds."}},{"name":"distance_limit","in":"query","required":false,"description":"Specify which distance the vehicle should travel. In meters.","schema":{"type":"integer","description":"Specify which distance the vehicle should travel. In meters."}},{"name":"vehicle","in":"query","required":false,"description":"The vehicle profile for which the route should be calculated.","schema":{"type":"string","enum":["car","bike","foot","hike","mtb","racingbike","scooter","truck","small_truck"],"default":"car","description":"The vehicle profile for which the route should be calculated."}},{"name":"buckets","in":"query","required":false,"description":"Number by which to divide the given `time_limit` to create `buckets` nested isochrones of time intervals…","schema":{"type":"integer","default":1,"description":"Number by which to divide the given `time_limit` to create `buckets` nested isochrones of time intervals…"}},{"name":"reverse_flow","in":"query","required":false,"description":"If `false` the flow goes from point to the polygon, if `true` the flow goes from the polygon \"inside\" to the point. Example use case for…","schema":{"type":"boolean","default":false,"description":"If `false` the flow goes from point to the polygon, if `true` the flow goes from the polygon \"inside\" to the point. Example use case for…"}},{"name":"weighting","in":"query","required":false,"description":"Use `\"shortest\"` to get an isodistance line instead of an isochrone.","schema":{"type":"string","enum":["fastest","shortest"],"default":"fastest","description":"Use `\"shortest\"` to get an isodistance line instead of an isochrone."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/post-gpx":{"post":{"operationId":"places_graphhopper_post_gpx","summary":"Map-match a GPX file","description":"POST /match","tags":["places"],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"gps_accuracy":{"type":"integer","description":"Specify the precision of a point, in meter"},"vehicle":{"type":"string","description":"Specify the vehicle profile like car"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-matrix":{"get":{"operationId":"places_graphhopper_get_matrix","summary":"GET Matrix Endpoint","description":"GET /matrix","tags":["places"],"parameters":[{"name":"point","in":"query","required":false,"description":"Specify multiple points in `latitude,longitude` for which the weight-, route-, time- or distance-matrix should be calculated. In this case…","schema":{"type":"array","description":"Specify multiple points in `latitude,longitude` for which the weight-, route-, time- or distance-matrix should be calculated. In this case…"}},{"name":"from_point","in":"query","required":false,"description":"The starting points for the routes in `latitude,longitude`. E.g. if you want to calculate the three routes A-&gt;1, A-&gt;2, A-&gt;3 then…","schema":{"type":"array","description":"The starting points for the routes in `latitude,longitude`. E.g. if you want to calculate the three routes A-&gt;1, A-&gt;2, A-&gt;3 then…"}},{"name":"to_point","in":"query","required":false,"description":"The destination points for the routes in `latitude,longitude`.","schema":{"type":"array","description":"The destination points for the routes in `latitude,longitude`."}},{"name":"point_hint","in":"query","required":false,"description":"Optional parameter. Specifies a hint for each `point` parameter to prefer a certain street for the closest location lookup. E.g. if there…","schema":{"type":"array","description":"Optional parameter. Specifies a hint for each `point` parameter to prefer a certain street for the closest location lookup. E.g. if there…"}},{"name":"from_point_hint","in":"query","required":false,"description":"For the from_point parameter. See point_hint","schema":{"type":"array","description":"For the from_point parameter. See point_hint"}},{"name":"to_point_hint","in":"query","required":false,"description":"For the to_point parameter. See point_hint","schema":{"type":"array","description":"For the to_point parameter. See point_hint"}},{"name":"snap_prevention","in":"query","required":false,"description":"Optional parameter to avoid snapping to a certain road class or road environment. Current supported values `motorway`, `trunk`, `ferry`,…","schema":{"type":"array","description":"Optional parameter to avoid snapping to a certain road class or road environment. Current supported values `motorway`, `trunk`, `ferry`,…"}},{"name":"curbside","in":"query","required":false,"description":"Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via…","schema":{"type":"array","description":"Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via…"}},{"name":"from_curbside","in":"query","required":false,"description":"Curbside setting for the from_point parameter. See curbside.","schema":{"type":"array","description":"Curbside setting for the from_point parameter. See curbside."}},{"name":"to_curbside","in":"query","required":false,"description":"Curbside setting for the to_point parameter. See curbside.","schema":{"type":"array","description":"Curbside setting for the to_point parameter. See curbside."}},{"name":"out_array","in":"query","required":false,"description":"Specifies which arrays should be included in the response. Specify one or more of the following options 'weights', 'times', 'distances'.…","schema":{"type":"array","description":"Specifies which arrays should be included in the response. Specify one or more of the following options 'weights', 'times', 'distances'.…"}},{"name":"vehicle","in":"query","required":false,"description":"The vehicle profile for which the matrix should be calculated.","schema":{"type":"string","enum":["car","bike","foot","hike","mtb","racingbike","scooter","truck","small_truck"],"default":"car","description":"The vehicle profile for which the matrix should be calculated."}},{"name":"fail_fast","in":"query","required":false,"description":"Specifies whether or not the matrix calculation should return with an error as soon as possible in case some points cannot be found or…","schema":{"type":"boolean","default":true,"description":"Specifies whether or not the matrix calculation should return with an error as soon as possible in case some points cannot be found or…"}},{"name":"turn_costs","in":"query","required":false,"description":"Specifies if turn restrictions should be considered. Enabling this option increases the matrix computation time. Only supported for motor…","schema":{"type":"boolean","default":false,"description":"Specifies if turn restrictions should be considered. Enabling this option increases the matrix computation time. Only supported for motor…"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/post-matrix":{"post":{"operationId":"places_graphhopper_post_matrix","summary":"POST Matrix Endpoint","description":"POST /matrix","tags":["places"],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/calculate-matrix":{"post":{"operationId":"places_graphhopper_calculate_matrix","summary":"Batch Matrix Endpoint","description":"POST /matrix/calculate","tags":["places"],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-matrix-solution":{"get":{"operationId":"places_graphhopper_get_matrix_solution","summary":"GET Batch Matrix Endpoint","description":"GET /matrix/solution/{jobId}","tags":["places"],"parameters":[{"name":"jobId","in":"query","required":true,"description":"Request solution with jobId","schema":{"type":"string","description":"Request solution with jobId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-route":{"get":{"operationId":"places_graphhopper_get_route","summary":"GET Route Endpoint","description":"GET /route","tags":["places"],"parameters":[{"name":"point","in":"query","required":true,"description":"The points for which the route should be calculated. Format: `[latitude,longitude]`. Specify at least an origin and a destination. Via…","schema":{"type":"array","description":"The points for which the route should be calculated. Format: `[latitude,longitude]`. Specify at least an origin and a destination. Via…"}},{"name":"point_hint","in":"query","required":false,"description":"The `point_hint` is typically a road name to which the associated `point` parameter should be snapped to. Specify no `point_hint`…","schema":{"type":"array","description":"The `point_hint` is typically a road name to which the associated `point` parameter should be snapped to. Specify no `point_hint`…"}},{"name":"snap_prevention","in":"query","required":false,"description":"Optional parameter to avoid snapping to a certain road class or road environment. Currently supported values are `motorway`, `trunk`,…","schema":{"type":"array","description":"Optional parameter to avoid snapping to a certain road class or road environment. Currently supported values are `motorway`, `trunk`,…"}},{"name":"vehicle","in":"query","required":false,"description":"The vehicle profile for which the route should be calculated.","schema":{"type":"string","enum":["car","bike","foot","hike","mtb","racingbike","scooter","truck","small_truck"],"default":"car","description":"The vehicle profile for which the route should be calculated."}},{"name":"curbside","in":"query","required":false,"description":"Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via…","schema":{"type":"array","description":"Optional parameter. It specifies on which side a point should be relative to the driver when she leaves/arrives at a start/target/via…"}},{"name":"turn_costs","in":"query","required":false,"description":"Specifies if turn restrictions should be considered. Enabling this option increases the route computation time. Only supported for motor…","schema":{"type":"boolean","default":false,"description":"Specifies if turn restrictions should be considered. Enabling this option increases the route computation time. Only supported for motor…"}},{"name":"locale","in":"query","required":false,"description":"The locale of the resulting turn instructions. E.g. `pt_PT` for Portuguese or `de` for German.","schema":{"type":"string","default":"en","description":"The locale of the resulting turn instructions. E.g. `pt_PT` for Portuguese or `de` for German."}},{"name":"elevation","in":"query","required":false,"description":"If `true`, a third coordinate, the altitude, is included with all positions in the response. This changes the format of the `points` and…","schema":{"type":"boolean","default":false,"description":"If `true`, a third coordinate, the altitude, is included with all positions in the response. This changes the format of the `points` and…"}},{"name":"details","in":"query","required":false,"description":"Optional parameter to retrieve path details. You can request additional details for the route: `street_name`, `time`, `distance`,…","schema":{"type":"array","description":"Optional parameter to retrieve path details. You can request additional details for the route: `street_name`, `time`, `distance`,…"}},{"name":"optimize","in":"query","required":false,"description":"Normally, the calculated route will visit the points in the order you specified them. If you have more than two points, you can set this…","schema":{"type":"string","default":"false","description":"Normally, the calculated route will visit the points in the order you specified them. If you have more than two points, you can set this…"}},{"name":"instructions","in":"query","required":false,"description":"If instructions should be calculated and returned","schema":{"type":"boolean","default":true,"description":"If instructions should be calculated and returned"}},{"name":"calc_points","in":"query","required":false,"description":"If the points for the route should be calculated at all.","schema":{"type":"boolean","default":true,"description":"If the points for the route should be calculated at all."}},{"name":"debug","in":"query","required":false,"description":"If `true`, the output will be formatted.","schema":{"type":"boolean","default":false,"description":"If `true`, the output will be formatted."}},{"name":"points_encoded","in":"query","required":false,"description":"Allows changing the encoding of location data in the response. The default is polyline encoding, which is compact but requires special…","schema":{"type":"boolean","default":true,"description":"Allows changing the encoding of location data in the response. The default is polyline encoding, which is compact but requires special…"}},{"name":"ch.disable","in":"query","required":false,"description":"Use this parameter in combination with one or more parameters from below.","schema":{"type":"boolean","default":false,"description":"Use this parameter in combination with one or more parameters from below."}},{"name":"weighting","in":"query","required":false,"description":"Determines the way the \"best\" route is calculated. Besides `fastest` you can use `short_fastest` which finds a reasonable balance between…","schema":{"type":"string","default":"fastest","description":"Determines the way the \"best\" route is calculated. Besides `fastest` you can use `short_fastest` which finds a reasonable balance between…"}},{"name":"heading","in":"query","required":false,"description":"Favour a heading direction for a certain point. Specify either one heading for the start point or as many as there are points. In this…","schema":{"type":"array","description":"Favour a heading direction for a certain point. Specify either one heading for the start point or as many as there are points. In this…"}},{"name":"heading_penalty","in":"query","required":false,"description":"Time penalty in seconds for not obeying a specified heading. Requires `ch.disable=true`.","schema":{"type":"integer","default":120,"description":"Time penalty in seconds for not obeying a specified heading. Requires `ch.disable=true`."}},{"name":"pass_through","in":"query","required":false,"description":"If `true`, u-turns are avoided at via-points with regard to the `heading_penalty`. Requires `ch.disable=true`.","schema":{"type":"boolean","default":false,"description":"If `true`, u-turns are avoided at via-points with regard to the `heading_penalty`. Requires `ch.disable=true`."}},{"name":"block_area","in":"query","required":false,"description":"Block road access by specifying a point close to the road segment to be blocked, with the format `lat,lon`. You can also block all road…","schema":{"type":"string","description":"Block road access by specifying a point close to the road segment to be blocked, with the format `lat,lon`. You can also block all road…"}},{"name":"avoid","in":"query","required":false,"description":"Specify which road classes and environments you would like to avoid. Possible values are `motorway`, `steps`, `track`, `toll`, `ferry`,…","schema":{"type":"string","description":"Specify which road classes and environments you would like to avoid. Possible values are `motorway`, `steps`, `track`, `toll`, `ferry`,…"}},{"name":"algorithm","in":"query","required":false,"description":"Rather than looking for the shortest or fastest path, this parameter lets you solve two different problems related to routing: With…","schema":{"type":"string","enum":["round_trip","alternative_route"],"description":"Rather than looking for the shortest or fastest path, this parameter lets you solve two different problems related to routing: With…"}},{"name":"round_trip.distance","in":"query","required":false,"description":"If `algorithm=round_trip`, this parameter configures approximative length of the resulting round trip. Requires `ch.disable=true`.","schema":{"type":"integer","default":10000,"description":"If `algorithm=round_trip`, this parameter configures approximative length of the resulting round trip. Requires `ch.disable=true`."}},{"name":"round_trip.seed","in":"query","required":false,"description":"If `algorithm=round_trip`, this sets the random seed. Change this to get a different tour for each value.","schema":{"type":"integer","description":"If `algorithm=round_trip`, this sets the random seed. Change this to get a different tour for each value."}},{"name":"alternative_route.max_paths","in":"query","required":false,"description":"If `algorithm=alternative_route`, this parameter sets the number of maximum paths which should be calculated. Increasing can lead to worse…","schema":{"type":"integer","default":2,"description":"If `algorithm=alternative_route`, this parameter sets the number of maximum paths which should be calculated. Increasing can lead to worse…"}},{"name":"alternative_route.max_weight_factor","in":"query","required":false,"description":"If `algorithm=alternative_route`, this parameter sets the factor by which the alternatives routes can be longer than the optimal route.…","schema":{"type":"number","default":1.4,"description":"If `algorithm=alternative_route`, this parameter sets the factor by which the alternatives routes can be longer than the optimal route.…"}},{"name":"alternative_route.max_share_factor","in":"query","required":false,"description":"If `algorithm=alternative_route`, this parameter specifies how similar an alternative route can be to the optimal route. Increasing can…","schema":{"type":"number","default":0.6,"description":"If `algorithm=alternative_route`, this parameter specifies how similar an alternative route can be to the optimal route. Increasing can…"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/post-route":{"post":{"operationId":"places_graphhopper_post_route","summary":"POST Route Endpoint","description":"POST /route","tags":["places"],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","required":[],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-route-info":{"get":{"operationId":"places_graphhopper_get_route_info","summary":"Coverage information","description":"GET /route/info","tags":["places"],"parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}},"/v1/places:graphhopper/solve-vrp":{"post":{"operationId":"places_graphhopper_solve_vrp","summary":"POST route optimization problem","description":"POST /vrp","tags":["places"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["body"],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/async-vrp":{"post":{"operationId":"places_graphhopper_async_vrp","summary":"POST route optimization problem (batch mode)","description":"POST /vrp/optimize","tags":["places"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["body"],"properties":{"body":{"type":"object","description":"JSON request body"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":0,"x-apizie-min-plan":null,"x-apizie-bulk":false,"x-apizie-status":"byok"}},"/v1/places:graphhopper/get-solution":{"get":{"operationId":"places_graphhopper_get_solution","summary":"GET the solution (batch mode)","description":"GET /vrp/solution/{jobId}","tags":["places"],"parameters":[{"name":"jobId","in":"query","required":true,"description":"Request solution with jobId","schema":{"type":"string","description":"Request solution with jobId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunEnvelope"}}}},"4XX":{"$ref":"#/components/responses/Error"},"5XX":{"$ref":"#/components/responses/Error"}},"x-apizie-cache-ttl":60,"x-apizie-min-plan":null,"x-apizie-bulk":true,"x-apizie-status":"byok"}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"RunEnvelope":{"type":"object","required":["project","data","timestamp"],"properties":{"project":{"type":"string","example":"dev-tools:hash"},"data":{},"timestamp":{"type":"string","format":"date-time"}}},"ErrorEnvelope":{"type":"object","properties":{"content":{},"message":{"type":"string"},"errors":{"type":"array","items":{}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Invalid key, plan gate, rate limit or upstream failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}