GEO-ROUTES

CalculateIsolines

enum_GeometryFormat := [ "FlexiblePolyline", "Simple" ]
enum_IsolineEngineType := [ "Electric", "InternalCombustion", "PluginHybrid" ]
enum_IsolineHazardousCargoType := [ "Combustible", "Corrosive", "Explosive", "Flammable", "Gas", "HarmfulToWater", "Organic", "Other", "Poison", "PoisonousInhalation", "Radioactive" ]
enum_IsolineOptimizationObjective := [ "AccurateCalculation", "BalancedCalculation", "FastCalculation" ]
enum_IsolineTravelMode := [ "Car", "Pedestrian", "Scooter", "Truck" ]
enum_IsolineTruckType := [ "LightTruck", "StraightTruck", "Tractor" ]
enum_IsolineZoneCategory := [ "CongestionPricing", "Environmental", "Vignette" ]
enum_MatchingStrategy := [ "MatchAny", "MatchMostSignificantRoad" ]
enum_RoutingObjective := [ "FastestRoute", "ShortestRoute" ]
enum_SideOfStreetMatchingStrategy := [ "AnyStreet", "DividedStreetOnly" ]
enum_TrafficUsage := [ "IgnoreTrafficData", "UseTrafficData" ]

valid {
    input.Body.Allow.Hot == BOOLEAN
    input.Body.Allow.Hov == BOOLEAN
    input.Body.ArrivalTime == STRING
    input.Body.Avoid.Areas[_].Except[_].BoundingBox[_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].Corridor.LineString[_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].Corridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Except[_].Polygon[_][_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].PolylineCorridor.Polyline == STRING
    input.Body.Avoid.Areas[_].Except[_].PolylineCorridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Except[_].PolylinePolygon[_] == STRING
    input.Body.Avoid.Areas[_].Geometry.BoundingBox[_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.Corridor.LineString[_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.Corridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.PolylineCorridor.Polyline == STRING
    input.Body.Avoid.Areas[_].Geometry.PolylineCorridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Geometry.PolylinePolygon[_] == STRING
    input.Body.Avoid.CarShuttleTrains == BOOLEAN
    input.Body.Avoid.ControlledAccessHighways == BOOLEAN
    input.Body.Avoid.DirtRoads == BOOLEAN
    input.Body.Avoid.Ferries == BOOLEAN
    input.Body.Avoid.SeasonalClosure == BOOLEAN
    input.Body.Avoid.TollRoads == BOOLEAN
    input.Body.Avoid.TollTransponders == BOOLEAN
    input.Body.Avoid.TruckRoadTypes[_] == STRING
    input.Body.Avoid.Tunnels == BOOLEAN
    input.Body.Avoid.UTurns == BOOLEAN
    input.Body.Avoid.ZoneCategories[_].Category == enum_IsolineZoneCategory[_]
    input.Body.DepartNow == BOOLEAN
    input.Body.DepartureTime == STRING
    input.Body.Destination[_] == DOUBLE
    input.Body.DestinationOptions.AvoidActionsForDistance == LONG
    input.Body.DestinationOptions.Heading == DOUBLE
    input.Body.DestinationOptions.Matching.NameHint == STRING
    input.Body.DestinationOptions.Matching.OnRoadThreshold == LONG
    input.Body.DestinationOptions.Matching.Radius == LONG
    input.Body.DestinationOptions.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.DestinationOptions.SideOfStreet.Position[_] == DOUBLE
    input.Body.DestinationOptions.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.IsolineGeometryFormat == enum_GeometryFormat[_]
    input.Body.IsolineGranularity.MaxPoints == INTEGER
    input.Body.IsolineGranularity.MaxResolution == LONG
    input.Body.OptimizeIsolineFor == enum_IsolineOptimizationObjective[_]
    input.Body.OptimizeRoutingFor == enum_RoutingObjective[_]
    input.Body.Origin[_] == DOUBLE
    input.Body.OriginOptions.AvoidActionsForDistance == LONG
    input.Body.OriginOptions.Heading == DOUBLE
    input.Body.OriginOptions.Matching.NameHint == STRING
    input.Body.OriginOptions.Matching.OnRoadThreshold == LONG
    input.Body.OriginOptions.Matching.Radius == LONG
    input.Body.OriginOptions.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.OriginOptions.SideOfStreet.Position[_] == DOUBLE
    input.Body.OriginOptions.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.Thresholds.Distance[_] == LONG
    input.Body.Thresholds.Time[_] == LONG
    input.Body.Traffic.FlowEventThresholdOverride == LONG
    input.Body.Traffic.Usage == enum_TrafficUsage[_]
    input.Body.TravelMode == enum_IsolineTravelMode[_]
    input.Body.TravelModeOptions.Car.EngineType == enum_IsolineEngineType[_]
    input.Body.TravelModeOptions.Car.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Car.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Car.Occupancy == INTEGER
    input.Body.TravelModeOptions.Scooter.EngineType == enum_IsolineEngineType[_]
    input.Body.TravelModeOptions.Scooter.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Scooter.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Scooter.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.AxleCount == INTEGER
    input.Body.TravelModeOptions.Truck.EngineType == enum_IsolineEngineType[_]
    input.Body.TravelModeOptions.Truck.GrossWeight == LONG
    input.Body.TravelModeOptions.Truck.HazardousCargos[_] == enum_IsolineHazardousCargoType[_]
    input.Body.TravelModeOptions.Truck.Height == LONG
    input.Body.TravelModeOptions.Truck.HeightAboveFirstAxle == LONG
    input.Body.TravelModeOptions.Truck.KpraLength == LONG
    input.Body.TravelModeOptions.Truck.Length == LONG
    input.Body.TravelModeOptions.Truck.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Truck.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Truck.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.PayloadCapacity == LONG
    input.Body.TravelModeOptions.Truck.TireCount == INTEGER
    input.Body.TravelModeOptions.Truck.Trailer.AxleCount == INTEGER
    input.Body.TravelModeOptions.Truck.Trailer.TrailerCount == INTEGER
    input.Body.TravelModeOptions.Truck.TruckType == enum_IsolineTruckType[_]
    input.Body.TravelModeOptions.Truck.TunnelRestrictionCode == STRING
    input.Body.TravelModeOptions.Truck.WeightPerAxle == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Single == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Tandem == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Triple == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quad == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quint == LONG
    input.Body.TravelModeOptions.Truck.Width == LONG
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CalculateRouteMatrix

enum_MatchingStrategy := [ "MatchAny", "MatchMostSignificantRoad" ]
enum_RouteMatrixHazardousCargoType := [ "Combustible", "Corrosive", "Explosive", "Flammable", "Gas", "HarmfulToWater", "Organic", "Other", "Poison", "PoisonousInhalation", "Radioactive" ]
enum_RouteMatrixTravelMode := [ "Car", "Pedestrian", "Scooter", "Truck" ]
enum_RouteMatrixTruckType := [ "LightTruck", "StraightTruck", "Tractor" ]
enum_RouteMatrixZoneCategory := [ "CongestionPricing", "Environmental", "Vignette" ]
enum_RoutingObjective := [ "FastestRoute", "ShortestRoute" ]
enum_SideOfStreetMatchingStrategy := [ "AnyStreet", "DividedStreetOnly" ]
enum_TrafficUsage := [ "IgnoreTrafficData", "UseTrafficData" ]

valid {
    input.Body.Allow.Hot == BOOLEAN
    input.Body.Allow.Hov == BOOLEAN
    input.Body.Avoid.Areas[_].Geometry.BoundingBox[_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.PolylinePolygon[_] == STRING
    input.Body.Avoid.CarShuttleTrains == BOOLEAN
    input.Body.Avoid.ControlledAccessHighways == BOOLEAN
    input.Body.Avoid.DirtRoads == BOOLEAN
    input.Body.Avoid.Ferries == BOOLEAN
    input.Body.Avoid.TollRoads == BOOLEAN
    input.Body.Avoid.TollTransponders == BOOLEAN
    input.Body.Avoid.TruckRoadTypes[_] == STRING
    input.Body.Avoid.Tunnels == BOOLEAN
    input.Body.Avoid.UTurns == BOOLEAN
    input.Body.Avoid.ZoneCategories[_].Category == enum_RouteMatrixZoneCategory[_]
    input.Body.DepartNow == BOOLEAN
    input.Body.DepartureTime == STRING
    input.Body.Destinations[_].Options.AvoidActionsForDistance == LONG
    input.Body.Destinations[_].Options.Heading == DOUBLE
    input.Body.Destinations[_].Options.Matching.NameHint == STRING
    input.Body.Destinations[_].Options.Matching.OnRoadThreshold == LONG
    input.Body.Destinations[_].Options.Matching.Radius == LONG
    input.Body.Destinations[_].Options.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.Destinations[_].Options.SideOfStreet.Position[_] == DOUBLE
    input.Body.Destinations[_].Options.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.Destinations[_].Position[_] == DOUBLE
    input.Body.Exclude.Countries[_] == STRING
    input.Body.OptimizeRoutingFor == enum_RoutingObjective[_]
    input.Body.Origins[_].Options.AvoidActionsForDistance == LONG
    input.Body.Origins[_].Options.Heading == DOUBLE
    input.Body.Origins[_].Options.Matching.NameHint == STRING
    input.Body.Origins[_].Options.Matching.OnRoadThreshold == LONG
    input.Body.Origins[_].Options.Matching.Radius == LONG
    input.Body.Origins[_].Options.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.Origins[_].Options.SideOfStreet.Position[_] == DOUBLE
    input.Body.Origins[_].Options.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.Origins[_].Position[_] == DOUBLE
    input.Body.RoutingBoundary.Geometry.AutoCircle.Margin == LONG
    input.Body.RoutingBoundary.Geometry.AutoCircle.MaxRadius == LONG
    input.Body.RoutingBoundary.Geometry.Circle.Center[_] == DOUBLE
    input.Body.RoutingBoundary.Geometry.Circle.Radius == DOUBLE
    input.Body.RoutingBoundary.Geometry.BoundingBox[_] == DOUBLE
    input.Body.RoutingBoundary.Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.RoutingBoundary.Unbounded == BOOLEAN
    input.Body.Traffic.FlowEventThresholdOverride == LONG
    input.Body.Traffic.Usage == enum_TrafficUsage[_]
    input.Body.TravelMode == enum_RouteMatrixTravelMode[_]
    input.Body.TravelModeOptions.Car.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Car.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Car.Occupancy == INTEGER
    input.Body.TravelModeOptions.Scooter.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Scooter.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Scooter.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.AxleCount == INTEGER
    input.Body.TravelModeOptions.Truck.GrossWeight == LONG
    input.Body.TravelModeOptions.Truck.HazardousCargos[_] == enum_RouteMatrixHazardousCargoType[_]
    input.Body.TravelModeOptions.Truck.Height == LONG
    input.Body.TravelModeOptions.Truck.KpraLength == LONG
    input.Body.TravelModeOptions.Truck.Length == LONG
    input.Body.TravelModeOptions.Truck.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Truck.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Truck.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.PayloadCapacity == LONG
    input.Body.TravelModeOptions.Truck.Trailer.TrailerCount == INTEGER
    input.Body.TravelModeOptions.Truck.TruckType == enum_RouteMatrixTruckType[_]
    input.Body.TravelModeOptions.Truck.TunnelRestrictionCode == STRING
    input.Body.TravelModeOptions.Truck.WeightPerAxle == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Single == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Tandem == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Triple == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quad == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quint == LONG
    input.Body.TravelModeOptions.Truck.Width == LONG
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CalculateRoutes

enum_GeometryFormat := [ "FlexiblePolyline", "Simple" ]
enum_MatchingStrategy := [ "MatchAny", "MatchMostSignificantRoad" ]
enum_MeasurementSystem := [ "Metric", "Imperial" ]
enum_RouteEngineType := [ "Electric", "InternalCombustion", "PluginHybrid" ]
enum_RouteHazardousCargoType := [ "Combustible", "Corrosive", "Explosive", "Flammable", "Gas", "HarmfulToWater", "Organic", "Other", "Poison", "PoisonousInhalation", "Radioactive" ]
enum_RouteLegAdditionalFeature := [ "Elevation", "Incidents", "PassThroughWaypoints", "Summary", "Tolls", "TravelStepInstructions", "TruckRoadTypes", "TypicalDuration", "Zones" ]
enum_RouteSpanAdditionalFeature := [ "BestCaseDuration", "CarAccess", "Country", "Distance", "Duration", "DynamicSpeed", "FunctionalClassification", "Gates", "Incidents", "Names", "Notices", "PedestrianAccess", "RailwayCrossings", "Region", "RoadAttributes", "RouteNumbers", "ScooterAccess", "SpeedLimit", "TollSystems", "TruckAccess", "TruckRoadTypes", "TypicalDuration", "Zones", "Consumption" ]
enum_RouteTollVehicleCategory := [ "Minibus" ]
enum_RouteTravelMode := [ "Car", "Pedestrian", "Scooter", "Truck" ]
enum_RouteTravelStepType := [ "Default", "TurnByTurn" ]
enum_RouteTruckType := [ "LightTruck", "StraightTruck", "Tractor" ]
enum_RouteZoneCategory := [ "CongestionPricing", "Environmental", "Vignette" ]
enum_RoutingObjective := [ "FastestRoute", "ShortestRoute" ]
enum_SideOfStreetMatchingStrategy := [ "AnyStreet", "DividedStreetOnly" ]
enum_TrafficUsage := [ "IgnoreTrafficData", "UseTrafficData" ]

valid {
    input.Body.Allow.Hot == BOOLEAN
    input.Body.Allow.Hov == BOOLEAN
    input.Body.ArrivalTime == STRING
    input.Body.Avoid.Areas[_].Except[_].Corridor.LineString[_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].Corridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Except[_].BoundingBox[_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].Polygon[_][_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Except[_].PolylineCorridor.Polyline == STRING
    input.Body.Avoid.Areas[_].Except[_].PolylineCorridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Except[_].PolylinePolygon[_] == STRING
    input.Body.Avoid.Areas[_].Geometry.Corridor.LineString[_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.Corridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Geometry.BoundingBox[_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.Avoid.Areas[_].Geometry.PolylineCorridor.Polyline == STRING
    input.Body.Avoid.Areas[_].Geometry.PolylineCorridor.Radius == INTEGER
    input.Body.Avoid.Areas[_].Geometry.PolylinePolygon[_] == STRING
    input.Body.Avoid.CarShuttleTrains == BOOLEAN
    input.Body.Avoid.ControlledAccessHighways == BOOLEAN
    input.Body.Avoid.DirtRoads == BOOLEAN
    input.Body.Avoid.Ferries == BOOLEAN
    input.Body.Avoid.SeasonalClosure == BOOLEAN
    input.Body.Avoid.TollRoads == BOOLEAN
    input.Body.Avoid.TollTransponders == BOOLEAN
    input.Body.Avoid.TruckRoadTypes[_] == STRING
    input.Body.Avoid.Tunnels == BOOLEAN
    input.Body.Avoid.UTurns == BOOLEAN
    input.Body.Avoid.ZoneCategories[_].Category == enum_RouteZoneCategory[_]
    input.Body.DepartNow == BOOLEAN
    input.Body.DepartureTime == STRING
    input.Body.Destination[_] == DOUBLE
    input.Body.DestinationOptions.AvoidActionsForDistance == LONG
    input.Body.DestinationOptions.AvoidUTurns == BOOLEAN
    input.Body.DestinationOptions.Heading == DOUBLE
    input.Body.DestinationOptions.Matching.NameHint == STRING
    input.Body.DestinationOptions.Matching.OnRoadThreshold == LONG
    input.Body.DestinationOptions.Matching.Radius == LONG
    input.Body.DestinationOptions.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.DestinationOptions.SideOfStreet.Position[_] == DOUBLE
    input.Body.DestinationOptions.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.DestinationOptions.StopDuration == LONG
    input.Body.Driver.Schedule[_].DriveDuration == LONG
    input.Body.Driver.Schedule[_].RestDuration == LONG
    input.Body.Exclude.Countries[_] == STRING
    input.Body.InstructionsMeasurementSystem == enum_MeasurementSystem[_]
    input.Body.Languages[_] == STRING
    input.Body.LegAdditionalFeatures[_] == enum_RouteLegAdditionalFeature[_]
    input.Body.LegGeometryFormat == enum_GeometryFormat[_]
    input.Body.MaxAlternatives == INTEGER
    input.Body.OptimizeRoutingFor == enum_RoutingObjective[_]
    input.Body.Origin[_] == DOUBLE
    input.Body.OriginOptions.AvoidActionsForDistance == LONG
    input.Body.OriginOptions.AvoidUTurns == BOOLEAN
    input.Body.OriginOptions.Heading == DOUBLE
    input.Body.OriginOptions.Matching.NameHint == STRING
    input.Body.OriginOptions.Matching.OnRoadThreshold == LONG
    input.Body.OriginOptions.Matching.Radius == LONG
    input.Body.OriginOptions.Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.OriginOptions.SideOfStreet.Position[_] == DOUBLE
    input.Body.OriginOptions.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.SpanAdditionalFeatures[_] == enum_RouteSpanAdditionalFeature[_]
    input.Body.Tolls.AllTransponders == BOOLEAN
    input.Body.Tolls.AllVignettes == BOOLEAN
    input.Body.Tolls.Currency == STRING
    input.Body.Tolls.EmissionType.Co2EmissionClass == STRING
    input.Body.Tolls.EmissionType.Type == STRING
    input.Body.Tolls.VehicleCategory == enum_RouteTollVehicleCategory[_]
    input.Body.Traffic.FlowEventThresholdOverride == LONG
    input.Body.Traffic.Usage == enum_TrafficUsage[_]
    input.Body.TravelMode == enum_RouteTravelMode[_]
    input.Body.TravelModeOptions.Car.EngineType == enum_RouteEngineType[_]
    input.Body.TravelModeOptions.Car.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Car.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Car.Occupancy == INTEGER
    input.Body.TravelModeOptions.Pedestrian.Speed == DOUBLE
    input.Body.TravelModeOptions.Scooter.EngineType == enum_RouteEngineType[_]
    input.Body.TravelModeOptions.Scooter.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Scooter.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Scooter.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.AxleCount == INTEGER
    input.Body.TravelModeOptions.Truck.EngineType == enum_RouteEngineType[_]
    input.Body.TravelModeOptions.Truck.GrossWeight == LONG
    input.Body.TravelModeOptions.Truck.HazardousCargos[_] == enum_RouteHazardousCargoType[_]
    input.Body.TravelModeOptions.Truck.Height == LONG
    input.Body.TravelModeOptions.Truck.HeightAboveFirstAxle == LONG
    input.Body.TravelModeOptions.Truck.KpraLength == LONG
    input.Body.TravelModeOptions.Truck.Length == LONG
    input.Body.TravelModeOptions.Truck.LicensePlate.LastCharacter == STRING
    input.Body.TravelModeOptions.Truck.MaxSpeed == DOUBLE
    input.Body.TravelModeOptions.Truck.Occupancy == INTEGER
    input.Body.TravelModeOptions.Truck.PayloadCapacity == LONG
    input.Body.TravelModeOptions.Truck.TireCount == INTEGER
    input.Body.TravelModeOptions.Truck.Trailer.AxleCount == INTEGER
    input.Body.TravelModeOptions.Truck.Trailer.TrailerCount == INTEGER
    input.Body.TravelModeOptions.Truck.TruckType == enum_RouteTruckType[_]
    input.Body.TravelModeOptions.Truck.TunnelRestrictionCode == STRING
    input.Body.TravelModeOptions.Truck.WeightPerAxle == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Single == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Tandem == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Triple == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quad == LONG
    input.Body.TravelModeOptions.Truck.WeightPerAxleGroup.Quint == LONG
    input.Body.TravelModeOptions.Truck.Width == LONG
    input.Body.TravelStepType == enum_RouteTravelStepType[_]
    input.Body.Waypoints[_].AvoidActionsForDistance == LONG
    input.Body.Waypoints[_].AvoidUTurns == BOOLEAN
    input.Body.Waypoints[_].Heading == DOUBLE
    input.Body.Waypoints[_].Matching.NameHint == STRING
    input.Body.Waypoints[_].Matching.OnRoadThreshold == LONG
    input.Body.Waypoints[_].Matching.Radius == LONG
    input.Body.Waypoints[_].Matching.Strategy == enum_MatchingStrategy[_]
    input.Body.Waypoints[_].PassThrough == BOOLEAN
    input.Body.Waypoints[_].Position[_] == DOUBLE
    input.Body.Waypoints[_].SideOfStreet.Position[_] == DOUBLE
    input.Body.Waypoints[_].SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.Waypoints[_].StopDuration == LONG
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

OptimizeWaypoints

enum_DayOfWeek := [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
enum_SideOfStreetMatchingStrategy := [ "AnyStreet", "DividedStreetOnly" ]
enum_TrafficUsage := [ "IgnoreTrafficData", "UseTrafficData" ]
enum_WaypointOptimizationHazardousCargoType := [ "Combustible", "Corrosive", "Explosive", "Flammable", "Gas", "HarmfulToWater", "Organic", "Other", "Poison", "PoisonousInhalation", "Radioactive" ]
enum_WaypointOptimizationSequencingObjective := [ "FastestRoute", "ShortestRoute" ]
enum_WaypointOptimizationServiceTimeTreatment := [ "Rest", "Work" ]
enum_WaypointOptimizationTravelMode := [ "Car", "Pedestrian", "Scooter", "Truck" ]
enum_WaypointOptimizationTruckType := [ "StraightTruck", "Tractor" ]

valid {
    input.Body.Avoid.Areas[_].Geometry.BoundingBox[_] == DOUBLE
    input.Body.Avoid.CarShuttleTrains == BOOLEAN
    input.Body.Avoid.ControlledAccessHighways == BOOLEAN
    input.Body.Avoid.DirtRoads == BOOLEAN
    input.Body.Avoid.Ferries == BOOLEAN
    input.Body.Avoid.TollRoads == BOOLEAN
    input.Body.Avoid.Tunnels == BOOLEAN
    input.Body.Avoid.UTurns == BOOLEAN
    input.Body.DepartureTime == STRING
    input.Body.Destination[_] == DOUBLE
    input.Body.DestinationOptions.AccessHours.From.DayOfWeek == enum_DayOfWeek[_]
    input.Body.DestinationOptions.AccessHours.From.TimeOfDay == STRING
    input.Body.DestinationOptions.AccessHours.To.DayOfWeek == enum_DayOfWeek[_]
    input.Body.DestinationOptions.AccessHours.To.TimeOfDay == STRING
    input.Body.DestinationOptions.AppointmentTime == STRING
    input.Body.DestinationOptions.Heading == DOUBLE
    input.Body.DestinationOptions.Id == STRING
    input.Body.DestinationOptions.ServiceDuration == LONG
    input.Body.DestinationOptions.SideOfStreet.Position[_] == DOUBLE
    input.Body.DestinationOptions.SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Body.Driver.RestCycles.LongCycle.RestDuration == LONG
    input.Body.Driver.RestCycles.LongCycle.WorkDuration == LONG
    input.Body.Driver.RestCycles.ShortCycle.RestDuration == LONG
    input.Body.Driver.RestCycles.ShortCycle.WorkDuration == LONG
    input.Body.Driver.RestProfile.Profile == STRING
    input.Body.Driver.TreatServiceTimeAs == enum_WaypointOptimizationServiceTimeTreatment[_]
    input.Body.Exclude.Countries[_] == STRING
    input.Body.OptimizeSequencingFor == enum_WaypointOptimizationSequencingObjective[_]
    input.Body.Origin[_] == DOUBLE
    input.Body.OriginOptions.Id == STRING
    input.Body.Traffic.Usage == enum_TrafficUsage[_]
    input.Body.TravelMode == enum_WaypointOptimizationTravelMode[_]
    input.Body.TravelModeOptions.Pedestrian.Speed == DOUBLE
    input.Body.TravelModeOptions.Truck.GrossWeight == LONG
    input.Body.TravelModeOptions.Truck.HazardousCargos[_] == enum_WaypointOptimizationHazardousCargoType[_]
    input.Body.TravelModeOptions.Truck.Height == LONG
    input.Body.TravelModeOptions.Truck.Length == LONG
    input.Body.TravelModeOptions.Truck.Trailer.TrailerCount == INTEGER
    input.Body.TravelModeOptions.Truck.TruckType == enum_WaypointOptimizationTruckType[_]
    input.Body.TravelModeOptions.Truck.TunnelRestrictionCode == STRING
    input.Body.TravelModeOptions.Truck.WeightPerAxle == LONG
    input.Body.TravelModeOptions.Truck.Width == LONG
    input.Body.Waypoints[_].AccessHours.From.DayOfWeek == enum_DayOfWeek[_]
    input.Body.Waypoints[_].AccessHours.From.TimeOfDay == STRING
    input.Body.Waypoints[_].AccessHours.To.DayOfWeek == enum_DayOfWeek[_]
    input.Body.Waypoints[_].AccessHours.To.TimeOfDay == STRING
    input.Body.Waypoints[_].AppointmentTime == STRING
    input.Body.Waypoints[_].Before[_] == INTEGER
    input.Body.Waypoints[_].Heading == DOUBLE
    input.Body.Waypoints[_].Id == STRING
    input.Body.Waypoints[_].Position[_] == DOUBLE
    input.Body.Waypoints[_].ServiceDuration == LONG
    input.Body.Waypoints[_].SideOfStreet.Position[_] == DOUBLE
    input.Body.Waypoints[_].SideOfStreet.UseWith == enum_SideOfStreetMatchingStrategy[_]
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SnapToRoads

enum_GeometryFormat := [ "FlexiblePolyline", "Simple" ]
enum_RoadSnapHazardousCargoType := [ "Combustible", "Corrosive", "Explosive", "Flammable", "Gas", "HarmfulToWater", "Organic", "Other", "Poison", "PoisonousInhalation", "Radioactive" ]
enum_RoadSnapTravelMode := [ "Car", "Pedestrian", "Scooter", "Truck" ]

valid {
    input.Body.SnappedGeometryFormat == enum_GeometryFormat[_]
    input.Body.SnapRadius == LONG
    input.Body.TracePoints[_].Heading == DOUBLE
    input.Body.TracePoints[_].Position[_] == DOUBLE
    input.Body.TracePoints[_].Speed == DOUBLE
    input.Body.TracePoints[_].Timestamp == STRING
    input.Body.TravelMode == enum_RoadSnapTravelMode[_]
    input.Body.TravelModeOptions.Truck.GrossWeight == LONG
    input.Body.TravelModeOptions.Truck.HazardousCargos[_] == enum_RoadSnapHazardousCargoType[_]
    input.Body.TravelModeOptions.Truck.Height == LONG
    input.Body.TravelModeOptions.Truck.Length == LONG
    input.Body.TravelModeOptions.Truck.Trailer.TrailerCount == INTEGER
    input.Body.TravelModeOptions.Truck.TunnelRestrictionCode == STRING
    input.Body.TravelModeOptions.Truck.Width == LONG
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}