AssociateTrackerConsumer

valid {
    input.Body.ConsumerArn == STRING
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteDevicePositionHistory

valid {
    input.Body.DeviceIds[_] == STRING
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDeleteGeofence

valid {
    input.Body.GeofenceIds[_] == STRING
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchEvaluateGeofences

valid {
    input.Body.DevicePositionUpdates[_].DeviceId == STRING
    input.Body.DevicePositionUpdates[_].SampleTime == TIMESTAMP
    input.Body.DevicePositionUpdates[_].Position[_] == DOUBLE
    input.Body.DevicePositionUpdates[_].Accuracy.Horizontal == DOUBLE
    input.Body.DevicePositionUpdates[_].PositionProperties.STRING == STRING
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetDevicePosition

valid {
    input.Body.DeviceIds[_] == STRING
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchPutGeofence

valid {
    input.Body.Entries[_].GeofenceId == STRING
    input.Body.Entries[_].Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.Entries[_].Geometry.Circle.Center[_] == DOUBLE
    input.Body.Entries[_].Geometry.Circle.Radius == DOUBLE
    input.Body.Entries[_].Geometry.Geobuf == BLOB
    input.Body.Entries[_].GeofenceProperties.STRING == STRING
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchUpdateDevicePosition

valid {
    input.Body.Updates[_].DeviceId == STRING
    input.Body.Updates[_].SampleTime == TIMESTAMP
    input.Body.Updates[_].Position[_] == DOUBLE
    input.Body.Updates[_].Accuracy.Horizontal == DOUBLE
    input.Body.Updates[_].PositionProperties.STRING == STRING
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CalculateRoute

enum_DimensionUnit := [ "Meters", "Feet" ]
enum_DistanceUnit := [ "Kilometers", "Miles" ]
enum_OptimizationMode := [ "FastestRoute", "ShortestRoute" ]
enum_TravelMode := [ "Car", "Truck", "Walking", "Bicycle", "Motorcycle" ]
enum_VehicleWeightUnit := [ "Kilograms", "Pounds" ]

valid {
    input.Body.DeparturePosition[_] == DOUBLE
    input.Body.DestinationPosition[_] == DOUBLE
    input.Body.WaypointPositions[_][_] == DOUBLE
    input.Body.TravelMode == enum_TravelMode[_]
    input.Body.DepartureTime == TIMESTAMP
    input.Body.DepartNow == BOOLEAN
    input.Body.DistanceUnit == enum_DistanceUnit[_]
    input.Body.IncludeLegGeometry == BOOLEAN
    input.Body.CarModeOptions.AvoidFerries == BOOLEAN
    input.Body.CarModeOptions.AvoidTolls == BOOLEAN
    input.Body.TruckModeOptions.AvoidFerries == BOOLEAN
    input.Body.TruckModeOptions.AvoidTolls == BOOLEAN
    input.Body.TruckModeOptions.Dimensions.Length == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Height == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Width == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Unit == enum_DimensionUnit[_]
    input.Body.TruckModeOptions.Weight.Total == DOUBLE
    input.Body.TruckModeOptions.Weight.Unit == enum_VehicleWeightUnit[_]
    input.Body.ArrivalTime == TIMESTAMP
    input.Body.OptimizeFor == enum_OptimizationMode[_]
    input.ReqMap.CalculatorName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CalculateRouteMatrix

enum_DimensionUnit := [ "Meters", "Feet" ]
enum_DistanceUnit := [ "Kilometers", "Miles" ]
enum_TravelMode := [ "Car", "Truck", "Walking", "Bicycle", "Motorcycle" ]
enum_VehicleWeightUnit := [ "Kilograms", "Pounds" ]

valid {
    input.Body.DeparturePositions[_][_] == DOUBLE
    input.Body.DestinationPositions[_][_] == DOUBLE
    input.Body.TravelMode == enum_TravelMode[_]
    input.Body.DepartureTime == TIMESTAMP
    input.Body.DepartNow == BOOLEAN
    input.Body.DistanceUnit == enum_DistanceUnit[_]
    input.Body.CarModeOptions.AvoidFerries == BOOLEAN
    input.Body.CarModeOptions.AvoidTolls == BOOLEAN
    input.Body.TruckModeOptions.AvoidFerries == BOOLEAN
    input.Body.TruckModeOptions.AvoidTolls == BOOLEAN
    input.Body.TruckModeOptions.Dimensions.Length == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Height == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Width == DOUBLE
    input.Body.TruckModeOptions.Dimensions.Unit == enum_DimensionUnit[_]
    input.Body.TruckModeOptions.Weight.Total == DOUBLE
    input.Body.TruckModeOptions.Weight.Unit == enum_VehicleWeightUnit[_]
    input.ReqMap.CalculatorName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateGeofenceCollection

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.CollectionName == STRING
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.PricingPlanDataSource == STRING
    input.Body.Description == STRING
    input.Body.Tags.STRING == STRING
    input.Body.KmsKeyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateKey

valid {
    input.Body.KeyName == STRING
    input.Body.Restrictions.AllowActions[_] == STRING
    input.Body.Restrictions.AllowResources[_] == STRING
    input.Body.Restrictions.AllowReferers[_] == STRING
    input.Body.Description == STRING
    input.Body.ExpireTime == TIMESTAMP
    input.Body.NoExpiry == BOOLEAN
    input.Body.Tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateMap

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.MapName == STRING
    input.Body.Configuration.Style == STRING
    input.Body.Configuration.PoliticalView == STRING
    input.Body.Configuration.CustomLayers[_] == STRING
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.Body.Tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePlaceIndex

enum_IntendedUse := [ "SingleUse", "Storage" ]
enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.IndexName == STRING
    input.Body.DataSource == STRING
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.Body.DataSourceConfiguration.IntendedUse == enum_IntendedUse[_]
    input.Body.Tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRouteCalculator

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.CalculatorName == STRING
    input.Body.DataSource == STRING
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.Body.Tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTracker

enum_PositionFiltering := [ "TimeBased", "DistanceBased", "AccuracyBased" ]
enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.TrackerName == STRING
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.KmsKeyId == STRING
    input.Body.PricingPlanDataSource == STRING
    input.Body.Description == STRING
    input.Body.Tags.STRING == STRING
    input.Body.PositionFiltering == enum_PositionFiltering[_]
    input.Body.EventBridgeEnabled == BOOLEAN
    input.Body.KmsKeyEnableGeospatialQueries == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteGeofenceCollection

valid {
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteKey

valid {
    input.ReqMap.KeyName == STRING
    input.Qs.forceDelete == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteMap

valid {
    input.ReqMap.MapName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeletePlaceIndex

valid {
    input.ReqMap.IndexName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteRouteCalculator

valid {
    input.ReqMap.CalculatorName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTracker

valid {
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeGeofenceCollection

valid {
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeKey

valid {
    input.ReqMap.KeyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeMap

valid {
    input.ReqMap.MapName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribePlaceIndex

valid {
    input.ReqMap.IndexName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeRouteCalculator

valid {
    input.ReqMap.CalculatorName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTracker

valid {
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateTrackerConsumer

valid {
    input.ReqMap.TrackerName == STRING
    input.ReqMap.ConsumerArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ForecastGeofenceEvents

enum_DistanceUnit := [ "Kilometers", "Miles" ]
enum_SpeedUnit := [ "KilometersPerHour", "MilesPerHour" ]

valid {
    input.Body.DeviceState.Position[_] == DOUBLE
    input.Body.DeviceState.Speed == DOUBLE
    input.Body.TimeHorizonMinutes == DOUBLE
    input.Body.DistanceUnit == enum_DistanceUnit[_]
    input.Body.SpeedUnit == enum_SpeedUnit[_]
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDevicePosition

valid {
    input.ReqMap.TrackerName == STRING
    input.ReqMap.DeviceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetDevicePositionHistory

valid {
    input.Body.NextToken == STRING
    input.Body.StartTimeInclusive == TIMESTAMP
    input.Body.EndTimeExclusive == TIMESTAMP
    input.Body.MaxResults == INTEGER
    input.ReqMap.TrackerName == STRING
    input.ReqMap.DeviceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetGeofence

valid {
    input.ReqMap.CollectionName == STRING
    input.ReqMap.GeofenceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMapGlyphs

valid {
    input.ReqMap.MapName == STRING
    input.ReqMap.FontStack == STRING
    input.ReqMap.FontUnicodeRange == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMapSprites

valid {
    input.ReqMap.MapName == STRING
    input.ReqMap.FileName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMapStyleDescriptor

valid {
    input.ReqMap.MapName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetMapTile

valid {
    input.ReqMap.MapName == STRING
    input.ReqMap.Z == STRING
    input.ReqMap.X == STRING
    input.ReqMap.Y == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetPlace

valid {
    input.ReqMap.IndexName == STRING
    input.ReqMap.PlaceId == STRING
    input.Qs.language == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDevicePositions

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.FilterGeometry.Polygon[_][_][_] == DOUBLE
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGeofenceCollections

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGeofences

valid {
    input.Body.NextToken == STRING
    input.Body.MaxResults == INTEGER
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListKeys

enum_Status := [ "Active", "Expired" ]

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.Body.Filter.KeyStatus == enum_Status[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListMaps

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListPlaceIndexes

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListRouteCalculators

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.ReqMap.ResourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTrackerConsumers

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTrackers

valid {
    input.Body.MaxResults == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutGeofence

valid {
    input.Body.Geometry.Polygon[_][_][_] == DOUBLE
    input.Body.Geometry.Circle.Center[_] == DOUBLE
    input.Body.Geometry.Circle.Radius == DOUBLE
    input.Body.Geometry.Geobuf == BLOB
    input.Body.GeofenceProperties.STRING == STRING
    input.ReqMap.CollectionName == STRING
    input.ReqMap.GeofenceId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchPlaceIndexForPosition

valid {
    input.Body.Position[_] == DOUBLE
    input.Body.MaxResults == INTEGER
    input.Body.Language == STRING
    input.ReqMap.IndexName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchPlaceIndexForSuggestions

valid {
    input.Body.Text == STRING
    input.Body.BiasPosition[_] == DOUBLE
    input.Body.FilterBBox[_] == DOUBLE
    input.Body.FilterCountries[_] == STRING
    input.Body.MaxResults == INTEGER
    input.Body.Language == STRING
    input.Body.FilterCategories[_] == STRING
    input.ReqMap.IndexName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchPlaceIndexForText

valid {
    input.Body.Text == STRING
    input.Body.BiasPosition[_] == DOUBLE
    input.Body.FilterBBox[_] == DOUBLE
    input.Body.FilterCountries[_] == STRING
    input.Body.MaxResults == INTEGER
    input.Body.Language == STRING
    input.Body.FilterCategories[_] == STRING
    input.ReqMap.IndexName == STRING
    input.Qs.key == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.Tags.STRING == STRING
    input.ReqMap.ResourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

valid {
    input.ReqMap.ResourceArn == STRING
    input.Qs.tagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGeofenceCollection

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.PricingPlanDataSource == STRING
    input.Body.Description == STRING
    input.ReqMap.CollectionName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateKey

valid {
    input.Body.Description == STRING
    input.Body.ExpireTime == TIMESTAMP
    input.Body.NoExpiry == BOOLEAN
    input.Body.ForceUpdate == BOOLEAN
    input.Body.Restrictions.AllowActions[_] == STRING
    input.Body.Restrictions.AllowResources[_] == STRING
    input.Body.Restrictions.AllowReferers[_] == STRING
    input.ReqMap.KeyName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateMap

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.Body.ConfigurationUpdate.PoliticalView == STRING
    input.Body.ConfigurationUpdate.CustomLayers[_] == STRING
    input.ReqMap.MapName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdatePlaceIndex

enum_IntendedUse := [ "SingleUse", "Storage" ]
enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.Body.DataSourceConfiguration.IntendedUse == enum_IntendedUse[_]
    input.ReqMap.IndexName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateRouteCalculator

enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.Description == STRING
    input.ReqMap.CalculatorName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTracker

enum_PositionFiltering := [ "TimeBased", "DistanceBased", "AccuracyBased" ]
enum_PricingPlan := [ "RequestBasedUsage", "MobileAssetTracking", "MobileAssetManagement" ]

valid {
    input.Body.PricingPlan == enum_PricingPlan[_]
    input.Body.PricingPlanDataSource == STRING
    input.Body.Description == STRING
    input.Body.PositionFiltering == enum_PositionFiltering[_]
    input.Body.EventBridgeEnabled == BOOLEAN
    input.Body.KmsKeyEnableGeospatialQueries == BOOLEAN
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

VerifyDevicePosition

enum_DistanceUnit := [ "Kilometers", "Miles" ]

valid {
    input.Body.DeviceState.DeviceId == STRING
    input.Body.DeviceState.SampleTime == TIMESTAMP
    input.Body.DeviceState.Position[_] == DOUBLE
    input.Body.DeviceState.Accuracy.Horizontal == DOUBLE
    input.Body.DeviceState.Ipv4Address == STRING
    input.Body.DeviceState.WiFiAccessPoints[_].MacAddress == STRING
    input.Body.DeviceState.WiFiAccessPoints[_].Rss == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].CellId == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].Mcc == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].Mnc == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].LocalId.Earfcn == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].LocalId.Pci == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NetworkMeasurements[_].Earfcn == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NetworkMeasurements[_].CellId == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NetworkMeasurements[_].Pci == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NetworkMeasurements[_].Rsrp == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NetworkMeasurements[_].Rsrq == FLOAT
    input.Body.DeviceState.CellSignals.LteCellDetails[_].TimingAdvance == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].NrCapable == BOOLEAN
    input.Body.DeviceState.CellSignals.LteCellDetails[_].Rsrp == INTEGER
    input.Body.DeviceState.CellSignals.LteCellDetails[_].Rsrq == FLOAT
    input.Body.DeviceState.CellSignals.LteCellDetails[_].Tac == INTEGER
    input.Body.DistanceUnit == enum_DistanceUnit[_]
    input.ReqMap.TrackerName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}