## Optimize route through waypoints `OptimizeResult optimize().create(OptimizeCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **post** `/api/v1/optimize` Optimize route through waypoints ### Parameters - `OptimizeCreateParams params` - `OptimizeRequest optimizeRequest` Route optimization request through waypoints ### Returns - `class OptimizeResult: A class that can be one of several variants.union` Optimization response — either a completed GeoJSON Feature route or an async job reference - `class OptimizeCompletedResult:` Completed optimization — GeoJSON Feature with optimized route - `GeoJsonGeometry geometry` - `Coordinates coordinates` GeoJSON coordinates array (nesting depth varies by geometry type) - `List` - `List>` - `List>>` - `List>>>` - `Type type` - `POINT("Point")` - `LINE_STRING("LineString")` - `POLYGON("Polygon")` - `MULTI_POINT("MultiPoint")` - `MULTI_LINE_STRING("MultiLineString")` - `MULTI_POLYGON("MultiPolygon")` - `Properties properties` - `Optional distance` Total distance in meters - `Optional duration` Estimated duration in seconds - `Optional> waypointOrder` Optimized waypoint ordering - `Status status` Job status - `COMPLETED("completed")` - `Type type` - `FEATURE("Feature")` - `class OptimizeProcessingResult:` Async optimization in progress — poll with the job_id - `String jobId` Job ID for polling - `Status status` Job status - `PROCESSING("processing")` ### Example ```java package com.plazafyi.example; import com.plazafyi.client.PlazaClient; import com.plazafyi.client.okhttp.PlazaOkHttpClient; import com.plazafyi.models.GeoJsonGeometry; import com.plazafyi.models.optimize.OptimizeCreateParams; import com.plazafyi.models.optimize.OptimizeRequest; import com.plazafyi.models.optimize.OptimizeResult; import java.util.List; public final class Main { private Main() {} public static void main(String[] args) { PlazaClient client = PlazaOkHttpClient.fromEnv(); OptimizeRequest params = OptimizeRequest.builder() .waypoints(GeoJsonGeometry.builder() .coordinatesOfNumber(List.of(0.0)) .type(GeoJsonGeometry.Type.POINT) .build()) .build(); OptimizeResult optimizeResult = client.optimize().create(params); } } ```