---
updatedAt: 2025-11-12T01:02:51.000Z
agentTools:
  projectIndex: https://public.docs.kivera.io/llms.txt
---

# IOTFLEETWISE

<Embed url="https://docs.aws.amazon.com/" title="AWS documentation" provider="docs.aws.amazon.com" href="https://docs.aws.amazon.com/" />

# AssociateVehicleFleet

```erlang
valid {
    input.Body.vehicleName == STRING
    input.Body.fleetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# BatchCreateVehicle

```erlang
enum_TimeUnit := [ "MILLISECOND", "SECOND", "MINUTE", "HOUR" ]
enum_VehicleAssociationBehavior := [ "CreateIotThing", "ValidateIotThingExists" ]

valid {
    input.Body.vehicles[_].vehicleName == STRING
    input.Body.vehicles[_].modelManifestArn == STRING
    input.Body.vehicles[_].decoderManifestArn == STRING
    input.Body.vehicles[_].attributes.STRING == STRING
    input.Body.vehicles[_].associationBehavior == enum_VehicleAssociationBehavior[_]
    input.Body.vehicles[_].tags[_].Key == STRING
    input.Body.vehicles[_].tags[_].Value == STRING
    input.Body.vehicles[_].stateTemplates[_].identifier == STRING
    input.Body.vehicles[_].stateTemplates[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.vehicles[_].stateTemplates[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.vehicles[_].stateTemplates[_].stateTemplateUpdateStrategy.onChange == {}
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# BatchUpdateVehicle

```erlang
enum_TimeUnit := [ "MILLISECOND", "SECOND", "MINUTE", "HOUR" ]
enum_UpdateMode := [ "Overwrite", "Merge" ]

valid {
    input.Body.vehicles[_].vehicleName == STRING
    input.Body.vehicles[_].modelManifestArn == STRING
    input.Body.vehicles[_].decoderManifestArn == STRING
    input.Body.vehicles[_].attributes.STRING == STRING
    input.Body.vehicles[_].attributeUpdateMode == enum_UpdateMode[_]
    input.Body.vehicles[_].stateTemplatesToAdd[_].identifier == STRING
    input.Body.vehicles[_].stateTemplatesToAdd[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.vehicles[_].stateTemplatesToAdd[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.vehicles[_].stateTemplatesToAdd[_].stateTemplateUpdateStrategy.onChange == {}
    input.Body.vehicles[_].stateTemplatesToRemove[_] == STRING
    input.Body.vehicles[_].stateTemplatesToUpdate[_].identifier == STRING
    input.Body.vehicles[_].stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.vehicles[_].stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.vehicles[_].stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.onChange == {}
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateCampaign

```erlang
enum_Compression := [ "OFF", "SNAPPY" ]
enum_DataFormat := [ "JSON", "PARQUET" ]
enum_DiagnosticsMode := [ "OFF", "SEND_ACTIVE_DTCS" ]
enum_SpoolingMode := [ "OFF", "TO_DISK" ]
enum_StorageCompressionFormat := [ "NONE", "GZIP" ]
enum_StorageMaximumSizeUnit := [ "MB", "GB", "TB" ]
enum_StorageMinimumTimeToLiveUnit := [ "HOURS", "DAYS", "WEEKS" ]
enum_TriggerMode := [ "ALWAYS", "RISING_EDGE" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.signalCatalogArn == STRING
    input.Body.targetArn == STRING
    input.Body.startTime == TIMESTAMP
    input.Body.expiryTime == TIMESTAMP
    input.Body.postTriggerCollectionDuration == LONG
    input.Body.diagnosticsMode == enum_DiagnosticsMode[_]
    input.Body.spoolingMode == enum_SpoolingMode[_]
    input.Body.compression == enum_Compression[_]
    input.Body.priority == INTEGER
    input.Body.signalsToCollect[_].name == STRING
    input.Body.signalsToCollect[_].maxSampleCount == LONG
    input.Body.signalsToCollect[_].minimumSamplingIntervalMs == LONG
    input.Body.signalsToCollect[_].dataPartitionId == STRING
    input.Body.collectionScheme.timeBasedCollectionScheme.periodMs == LONG
    input.Body.collectionScheme.conditionBasedCollectionScheme.expression == STRING
    input.Body.collectionScheme.conditionBasedCollectionScheme.minimumTriggerIntervalMs == LONG
    input.Body.collectionScheme.conditionBasedCollectionScheme.triggerMode == enum_TriggerMode[_]
    input.Body.collectionScheme.conditionBasedCollectionScheme.conditionLanguageVersion == INTEGER
    input.Body.dataExtraDimensions[_] == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.Body.dataDestinationConfigs[_].s3Config.bucketArn == STRING
    input.Body.dataDestinationConfigs[_].s3Config.dataFormat == enum_DataFormat[_]
    input.Body.dataDestinationConfigs[_].s3Config.storageCompressionFormat == enum_StorageCompressionFormat[_]
    input.Body.dataDestinationConfigs[_].s3Config.prefix == STRING
    input.Body.dataDestinationConfigs[_].timestreamConfig.timestreamTableArn == STRING
    input.Body.dataDestinationConfigs[_].timestreamConfig.executionRoleArn == STRING
    input.Body.dataDestinationConfigs[_].mqttTopicConfig.mqttTopicArn == STRING
    input.Body.dataDestinationConfigs[_].mqttTopicConfig.executionRoleArn == STRING
    input.Body.dataPartitions[_].id == STRING
    input.Body.dataPartitions[_].storageOptions.maximumSize.unit == enum_StorageMaximumSizeUnit[_]
    input.Body.dataPartitions[_].storageOptions.maximumSize.value == INTEGER
    input.Body.dataPartitions[_].storageOptions.storageLocation == STRING
    input.Body.dataPartitions[_].storageOptions.minimumTimeToLive.unit == enum_StorageMinimumTimeToLiveUnit[_]
    input.Body.dataPartitions[_].storageOptions.minimumTimeToLive.value == INTEGER
    input.Body.dataPartitions[_].uploadOptions.expression == STRING
    input.Body.dataPartitions[_].uploadOptions.conditionLanguageVersion == INTEGER
    input.Body.signalsToFetch[_].fullyQualifiedName == STRING
    input.Body.signalsToFetch[_].signalFetchConfig.timeBased.executionFrequencyMs == LONG
    input.Body.signalsToFetch[_].signalFetchConfig.conditionBased.conditionExpression == STRING
    input.Body.signalsToFetch[_].signalFetchConfig.conditionBased.triggerMode == enum_TriggerMode[_]
    input.Body.signalsToFetch[_].conditionLanguageVersion == INTEGER
    input.Body.signalsToFetch[_].actions[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateDecoderManifest

```erlang
enum_DefaultForUnmappedSignalsType := [ "CUSTOM_DECODING" ]
enum_NetworkInterfaceType := [ "CAN_INTERFACE", "OBD_INTERFACE", "VEHICLE_MIDDLEWARE", "CUSTOM_DECODING_INTERFACE" ]
enum_ROS2PrimitiveType := [ "BOOL", "BYTE", "CHAR", "FLOAT32", "FLOAT64", "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "STRING", "WSTRING" ]
enum_SignalDecoderType := [ "CAN_SIGNAL", "OBD_SIGNAL", "MESSAGE_SIGNAL", "CUSTOM_DECODING_SIGNAL" ]
enum_SignalValueType := [ "INTEGER", "FLOATING_POINT" ]
enum_StructuredMessageListType := [ "FIXED_CAPACITY", "DYNAMIC_UNBOUNDED_CAPACITY", "DYNAMIC_BOUNDED_CAPACITY" ]
enum_VehicleMiddlewareProtocol := [ "ROS_2" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.modelManifestArn == STRING
    input.Body.signalDecoders[_].fullyQualifiedName == STRING
    input.Body.signalDecoders[_].type == enum_SignalDecoderType[_]
    input.Body.signalDecoders[_].interfaceId == STRING
    input.Body.signalDecoders[_].canSignal.messageId == INTEGER
    input.Body.signalDecoders[_].canSignal.isBigEndian == BOOLEAN
    input.Body.signalDecoders[_].canSignal.isSigned == BOOLEAN
    input.Body.signalDecoders[_].canSignal.startBit == INTEGER
    input.Body.signalDecoders[_].canSignal.offset == DOUBLE
    input.Body.signalDecoders[_].canSignal.factor == DOUBLE
    input.Body.signalDecoders[_].canSignal.length == INTEGER
    input.Body.signalDecoders[_].canSignal.name == STRING
    input.Body.signalDecoders[_].canSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecoders[_].obdSignal.pidResponseLength == INTEGER
    input.Body.signalDecoders[_].obdSignal.serviceMode == INTEGER
    input.Body.signalDecoders[_].obdSignal.pid == INTEGER
    input.Body.signalDecoders[_].obdSignal.scaling == DOUBLE
    input.Body.signalDecoders[_].obdSignal.offset == DOUBLE
    input.Body.signalDecoders[_].obdSignal.startByte == INTEGER
    input.Body.signalDecoders[_].obdSignal.byteLength == INTEGER
    input.Body.signalDecoders[_].obdSignal.bitRightShift == INTEGER
    input.Body.signalDecoders[_].obdSignal.bitMaskLength == INTEGER
    input.Body.signalDecoders[_].obdSignal.isSigned == BOOLEAN
    input.Body.signalDecoders[_].obdSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecoders[_].messageSignal.topicName == STRING
    input.Body.signalDecoders[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.primitiveType == enum_ROS2PrimitiveType[_]
    input.Body.signalDecoders[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.offset == DOUBLE
    input.Body.signalDecoders[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.scaling == DOUBLE
    input.Body.signalDecoders[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.upperBound == LONG
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageListDefinition.name == STRING
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageListDefinition.memberType == NESTED
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageListDefinition.listType == enum_StructuredMessageListType[_]
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageListDefinition.capacity == INTEGER
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageDefinition[_].fieldName == STRING
    input.Body.signalDecoders[_].messageSignal.structuredMessage.structuredMessageDefinition[_].dataType == NESTED
    input.Body.signalDecoders[_].customDecodingSignal.id == STRING
    input.Body.networkInterfaces[_].interfaceId == STRING
    input.Body.networkInterfaces[_].type == enum_NetworkInterfaceType[_]
    input.Body.networkInterfaces[_].canInterface.name == STRING
    input.Body.networkInterfaces[_].canInterface.protocolName == STRING
    input.Body.networkInterfaces[_].canInterface.protocolVersion == STRING
    input.Body.networkInterfaces[_].obdInterface.name == STRING
    input.Body.networkInterfaces[_].obdInterface.requestMessageId == INTEGER
    input.Body.networkInterfaces[_].obdInterface.obdStandard == STRING
    input.Body.networkInterfaces[_].obdInterface.pidRequestIntervalSeconds == INTEGER
    input.Body.networkInterfaces[_].obdInterface.dtcRequestIntervalSeconds == INTEGER
    input.Body.networkInterfaces[_].obdInterface.useExtendedIds == BOOLEAN
    input.Body.networkInterfaces[_].obdInterface.hasTransmissionEcu == BOOLEAN
    input.Body.networkInterfaces[_].vehicleMiddleware.name == STRING
    input.Body.networkInterfaces[_].vehicleMiddleware.protocolName == enum_VehicleMiddlewareProtocol[_]
    input.Body.networkInterfaces[_].customDecodingInterface.name == STRING
    input.Body.defaultForUnmappedSignals == enum_DefaultForUnmappedSignalsType[_]
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateFleet

```erlang
valid {
    input.Body.fleetId == STRING
    input.Body.description == STRING
    input.Body.signalCatalogArn == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateModelManifest

```erlang
valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.nodes[_] == STRING
    input.Body.signalCatalogArn == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateSignalCatalog

```erlang
enum_NodeDataEncoding := [ "BINARY", "TYPED" ]
enum_NodeDataType := [ "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.nodes[_].branch.fullyQualifiedName == STRING
    input.Body.nodes[_].branch.description == STRING
    input.Body.nodes[_].branch.deprecationMessage == STRING
    input.Body.nodes[_].branch.comment == STRING
    input.Body.nodes[_].sensor.fullyQualifiedName == STRING
    input.Body.nodes[_].sensor.dataType == enum_NodeDataType[_]
    input.Body.nodes[_].sensor.description == STRING
    input.Body.nodes[_].sensor.unit == STRING
    input.Body.nodes[_].sensor.allowedValues[_] == STRING
    input.Body.nodes[_].sensor.min == DOUBLE
    input.Body.nodes[_].sensor.max == DOUBLE
    input.Body.nodes[_].sensor.deprecationMessage == STRING
    input.Body.nodes[_].sensor.comment == STRING
    input.Body.nodes[_].sensor.structFullyQualifiedName == STRING
    input.Body.nodes[_].actuator.fullyQualifiedName == STRING
    input.Body.nodes[_].actuator.dataType == enum_NodeDataType[_]
    input.Body.nodes[_].actuator.description == STRING
    input.Body.nodes[_].actuator.unit == STRING
    input.Body.nodes[_].actuator.allowedValues[_] == STRING
    input.Body.nodes[_].actuator.min == DOUBLE
    input.Body.nodes[_].actuator.max == DOUBLE
    input.Body.nodes[_].actuator.assignedValue == STRING
    input.Body.nodes[_].actuator.deprecationMessage == STRING
    input.Body.nodes[_].actuator.comment == STRING
    input.Body.nodes[_].actuator.structFullyQualifiedName == STRING
    input.Body.nodes[_].attribute.fullyQualifiedName == STRING
    input.Body.nodes[_].attribute.dataType == enum_NodeDataType[_]
    input.Body.nodes[_].attribute.description == STRING
    input.Body.nodes[_].attribute.unit == STRING
    input.Body.nodes[_].attribute.allowedValues[_] == STRING
    input.Body.nodes[_].attribute.min == DOUBLE
    input.Body.nodes[_].attribute.max == DOUBLE
    input.Body.nodes[_].attribute.assignedValue == STRING
    input.Body.nodes[_].attribute.defaultValue == STRING
    input.Body.nodes[_].attribute.deprecationMessage == STRING
    input.Body.nodes[_].attribute.comment == STRING
    input.Body.nodes[_].struct.fullyQualifiedName == STRING
    input.Body.nodes[_].struct.description == STRING
    input.Body.nodes[_].struct.deprecationMessage == STRING
    input.Body.nodes[_].struct.comment == STRING
    input.Body.nodes[_].property.fullyQualifiedName == STRING
    input.Body.nodes[_].property.dataType == enum_NodeDataType[_]
    input.Body.nodes[_].property.dataEncoding == enum_NodeDataEncoding[_]
    input.Body.nodes[_].property.description == STRING
    input.Body.nodes[_].property.deprecationMessage == STRING
    input.Body.nodes[_].property.comment == STRING
    input.Body.nodes[_].property.structFullyQualifiedName == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateStateTemplate

```erlang
valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.signalCatalogArn == STRING
    input.Body.stateTemplateProperties[_] == STRING
    input.Body.dataExtraDimensions[_] == STRING
    input.Body.metadataExtraDimensions[_] == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# CreateVehicle

```erlang
enum_TimeUnit := [ "MILLISECOND", "SECOND", "MINUTE", "HOUR" ]
enum_VehicleAssociationBehavior := [ "CreateIotThing", "ValidateIotThingExists" ]

valid {
    input.Body.vehicleName == STRING
    input.Body.modelManifestArn == STRING
    input.Body.decoderManifestArn == STRING
    input.Body.attributes.STRING == STRING
    input.Body.associationBehavior == enum_VehicleAssociationBehavior[_]
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.Body.stateTemplates[_].identifier == STRING
    input.Body.stateTemplates[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.stateTemplates[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.stateTemplates[_].stateTemplateUpdateStrategy.onChange == {}
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteCampaign

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteDecoderManifest

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteFleet

```erlang
valid {
    input.Body.fleetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteModelManifest

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteSignalCatalog

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteStateTemplate

```erlang
valid {
    input.Body.identifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DeleteVehicle

```erlang
valid {
    input.Body.vehicleName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# DisassociateVehicleFleet

```erlang
valid {
    input.Body.vehicleName == STRING
    input.Body.fleetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetCampaign

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetDecoderManifest

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetEncryptionConfiguration

```erlang
valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetFleet

```erlang
valid {
    input.Body.fleetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetLoggingOptions

```erlang
valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetModelManifest

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetRegisterAccountStatus

```erlang
valid {
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetSignalCatalog

```erlang
valid {
    input.Body.name == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetStateTemplate

```erlang
valid {
    input.Body.identifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetVehicle

```erlang
valid {
    input.Body.vehicleName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# GetVehicleStatus

```erlang
valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.vehicleName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ImportDecoderManifest

```erlang
valid {
    input.Body.name == STRING
    input.Body.networkFileDefinitions[_].canDbc.networkInterface == STRING
    input.Body.networkFileDefinitions[_].canDbc.canDbcFiles[_] == BLOB
    input.Body.networkFileDefinitions[_].canDbc.signalsMap.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ImportSignalCatalog

```erlang
valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.vss.vssJson == STRING
    input.Body.tags[_].Key == STRING
    input.Body.tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListCampaigns

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.status == STRING
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListDecoderManifestNetworkInterfaces

```erlang
valid {
    input.Body.name == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListDecoderManifestSignals

```erlang
valid {
    input.Body.name == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListDecoderManifests

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.modelManifestArn == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListFleets

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListFleetsForVehicle

```erlang
valid {
    input.Body.vehicleName == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListModelManifestNodes

```erlang
valid {
    input.Body.name == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListModelManifests

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.signalCatalogArn == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListSignalCatalogNodes

```erlang
enum_SignalNodeType := [ "SENSOR", "ACTUATOR", "ATTRIBUTE", "BRANCH", "CUSTOM_STRUCT", "CUSTOM_PROPERTY" ]

valid {
    input.Body.name == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.signalNodeType == enum_SignalNodeType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListSignalCatalogs

```erlang
valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListStateTemplates

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListTagsForResource

```erlang
valid {
    input.Body.ResourceARN == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListVehicles

```erlang
enum_ListResponseScope := [ "METADATA_ONLY" ]

valid {
    input.Body.modelManifestArn == STRING
    input.Body.attributeNames[_] == STRING
    input.Body.attributeValues[_] == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.listResponseScope == enum_ListResponseScope[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# ListVehiclesInFleet

```erlang
valid {
    input.Body.fleetId == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# PutEncryptionConfiguration

```erlang
enum_EncryptionType := [ "KMS_BASED_ENCRYPTION", "FLEETWISE_DEFAULT_ENCRYPTION" ]

valid {
    input.Body.kmsKeyId == STRING
    input.Body.encryptionType == enum_EncryptionType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# PutLoggingOptions

```erlang
enum_LogType := [ "OFF", "ERROR" ]

valid {
    input.Body.cloudWatchLogDelivery.logType == enum_LogType[_]
    input.Body.cloudWatchLogDelivery.logGroupName == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# RegisterAccount

```erlang
valid {
    input.Body.timestreamResources.timestreamDatabaseName == STRING
    input.Body.timestreamResources.timestreamTableName == STRING
    input.Body.iamResources.roleArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# TagResource

```erlang
valid {
    input.Body.ResourceARN == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UntagResource

```erlang
valid {
    input.Body.ResourceARN == STRING
    input.Body.TagKeys[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateCampaign

```erlang
enum_UpdateCampaignAction := [ "APPROVE", "SUSPEND", "RESUME", "UPDATE" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.dataExtraDimensions[_] == STRING
    input.Body.action == enum_UpdateCampaignAction[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateDecoderManifest

```erlang
enum_DefaultForUnmappedSignalsType := [ "CUSTOM_DECODING" ]
enum_ManifestStatus := [ "ACTIVE", "DRAFT", "INVALID", "VALIDATING" ]
enum_NetworkInterfaceType := [ "CAN_INTERFACE", "OBD_INTERFACE", "VEHICLE_MIDDLEWARE", "CUSTOM_DECODING_INTERFACE" ]
enum_ROS2PrimitiveType := [ "BOOL", "BYTE", "CHAR", "FLOAT32", "FLOAT64", "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "STRING", "WSTRING" ]
enum_SignalDecoderType := [ "CAN_SIGNAL", "OBD_SIGNAL", "MESSAGE_SIGNAL", "CUSTOM_DECODING_SIGNAL" ]
enum_SignalValueType := [ "INTEGER", "FLOATING_POINT" ]
enum_StructuredMessageListType := [ "FIXED_CAPACITY", "DYNAMIC_UNBOUNDED_CAPACITY", "DYNAMIC_BOUNDED_CAPACITY" ]
enum_VehicleMiddlewareProtocol := [ "ROS_2" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.signalDecodersToAdd[_].fullyQualifiedName == STRING
    input.Body.signalDecodersToAdd[_].type == enum_SignalDecoderType[_]
    input.Body.signalDecodersToAdd[_].interfaceId == STRING
    input.Body.signalDecodersToAdd[_].canSignal.messageId == INTEGER
    input.Body.signalDecodersToAdd[_].canSignal.isBigEndian == BOOLEAN
    input.Body.signalDecodersToAdd[_].canSignal.isSigned == BOOLEAN
    input.Body.signalDecodersToAdd[_].canSignal.startBit == INTEGER
    input.Body.signalDecodersToAdd[_].canSignal.offset == DOUBLE
    input.Body.signalDecodersToAdd[_].canSignal.factor == DOUBLE
    input.Body.signalDecodersToAdd[_].canSignal.length == INTEGER
    input.Body.signalDecodersToAdd[_].canSignal.name == STRING
    input.Body.signalDecodersToAdd[_].canSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecodersToAdd[_].obdSignal.pidResponseLength == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.serviceMode == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.pid == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.scaling == DOUBLE
    input.Body.signalDecodersToAdd[_].obdSignal.offset == DOUBLE
    input.Body.signalDecodersToAdd[_].obdSignal.startByte == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.byteLength == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.bitRightShift == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.bitMaskLength == INTEGER
    input.Body.signalDecodersToAdd[_].obdSignal.isSigned == BOOLEAN
    input.Body.signalDecodersToAdd[_].obdSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecodersToAdd[_].messageSignal.topicName == STRING
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.primitiveType == enum_ROS2PrimitiveType[_]
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.offset == DOUBLE
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.scaling == DOUBLE
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.upperBound == LONG
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageListDefinition.name == STRING
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageListDefinition.memberType == NESTED
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageListDefinition.listType == enum_StructuredMessageListType[_]
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageListDefinition.capacity == INTEGER
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageDefinition[_].fieldName == STRING
    input.Body.signalDecodersToAdd[_].messageSignal.structuredMessage.structuredMessageDefinition[_].dataType == NESTED
    input.Body.signalDecodersToAdd[_].customDecodingSignal.id == STRING
    input.Body.signalDecodersToUpdate[_].fullyQualifiedName == STRING
    input.Body.signalDecodersToUpdate[_].type == enum_SignalDecoderType[_]
    input.Body.signalDecodersToUpdate[_].interfaceId == STRING
    input.Body.signalDecodersToUpdate[_].canSignal.messageId == INTEGER
    input.Body.signalDecodersToUpdate[_].canSignal.isBigEndian == BOOLEAN
    input.Body.signalDecodersToUpdate[_].canSignal.isSigned == BOOLEAN
    input.Body.signalDecodersToUpdate[_].canSignal.startBit == INTEGER
    input.Body.signalDecodersToUpdate[_].canSignal.offset == DOUBLE
    input.Body.signalDecodersToUpdate[_].canSignal.factor == DOUBLE
    input.Body.signalDecodersToUpdate[_].canSignal.length == INTEGER
    input.Body.signalDecodersToUpdate[_].canSignal.name == STRING
    input.Body.signalDecodersToUpdate[_].canSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecodersToUpdate[_].obdSignal.pidResponseLength == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.serviceMode == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.pid == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.scaling == DOUBLE
    input.Body.signalDecodersToUpdate[_].obdSignal.offset == DOUBLE
    input.Body.signalDecodersToUpdate[_].obdSignal.startByte == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.byteLength == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.bitRightShift == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.bitMaskLength == INTEGER
    input.Body.signalDecodersToUpdate[_].obdSignal.isSigned == BOOLEAN
    input.Body.signalDecodersToUpdate[_].obdSignal.signalValueType == enum_SignalValueType[_]
    input.Body.signalDecodersToUpdate[_].messageSignal.topicName == STRING
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.primitiveType == enum_ROS2PrimitiveType[_]
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.offset == DOUBLE
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.scaling == DOUBLE
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.primitiveMessageDefinition.ros2PrimitiveMessageDefinition.upperBound == LONG
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageListDefinition.name == STRING
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageListDefinition.memberType == NESTED
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageListDefinition.listType == enum_StructuredMessageListType[_]
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageListDefinition.capacity == INTEGER
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageDefinition[_].fieldName == STRING
    input.Body.signalDecodersToUpdate[_].messageSignal.structuredMessage.structuredMessageDefinition[_].dataType == NESTED
    input.Body.signalDecodersToUpdate[_].customDecodingSignal.id == STRING
    input.Body.signalDecodersToRemove[_] == STRING
    input.Body.networkInterfacesToAdd[_].interfaceId == STRING
    input.Body.networkInterfacesToAdd[_].type == enum_NetworkInterfaceType[_]
    input.Body.networkInterfacesToAdd[_].canInterface.name == STRING
    input.Body.networkInterfacesToAdd[_].canInterface.protocolName == STRING
    input.Body.networkInterfacesToAdd[_].canInterface.protocolVersion == STRING
    input.Body.networkInterfacesToAdd[_].obdInterface.name == STRING
    input.Body.networkInterfacesToAdd[_].obdInterface.requestMessageId == INTEGER
    input.Body.networkInterfacesToAdd[_].obdInterface.obdStandard == STRING
    input.Body.networkInterfacesToAdd[_].obdInterface.pidRequestIntervalSeconds == INTEGER
    input.Body.networkInterfacesToAdd[_].obdInterface.dtcRequestIntervalSeconds == INTEGER
    input.Body.networkInterfacesToAdd[_].obdInterface.useExtendedIds == BOOLEAN
    input.Body.networkInterfacesToAdd[_].obdInterface.hasTransmissionEcu == BOOLEAN
    input.Body.networkInterfacesToAdd[_].vehicleMiddleware.name == STRING
    input.Body.networkInterfacesToAdd[_].vehicleMiddleware.protocolName == enum_VehicleMiddlewareProtocol[_]
    input.Body.networkInterfacesToAdd[_].customDecodingInterface.name == STRING
    input.Body.networkInterfacesToUpdate[_].interfaceId == STRING
    input.Body.networkInterfacesToUpdate[_].type == enum_NetworkInterfaceType[_]
    input.Body.networkInterfacesToUpdate[_].canInterface.name == STRING
    input.Body.networkInterfacesToUpdate[_].canInterface.protocolName == STRING
    input.Body.networkInterfacesToUpdate[_].canInterface.protocolVersion == STRING
    input.Body.networkInterfacesToUpdate[_].obdInterface.name == STRING
    input.Body.networkInterfacesToUpdate[_].obdInterface.requestMessageId == INTEGER
    input.Body.networkInterfacesToUpdate[_].obdInterface.obdStandard == STRING
    input.Body.networkInterfacesToUpdate[_].obdInterface.pidRequestIntervalSeconds == INTEGER
    input.Body.networkInterfacesToUpdate[_].obdInterface.dtcRequestIntervalSeconds == INTEGER
    input.Body.networkInterfacesToUpdate[_].obdInterface.useExtendedIds == BOOLEAN
    input.Body.networkInterfacesToUpdate[_].obdInterface.hasTransmissionEcu == BOOLEAN
    input.Body.networkInterfacesToUpdate[_].vehicleMiddleware.name == STRING
    input.Body.networkInterfacesToUpdate[_].vehicleMiddleware.protocolName == enum_VehicleMiddlewareProtocol[_]
    input.Body.networkInterfacesToUpdate[_].customDecodingInterface.name == STRING
    input.Body.networkInterfacesToRemove[_] == STRING
    input.Body.status == enum_ManifestStatus[_]
    input.Body.defaultForUnmappedSignals == enum_DefaultForUnmappedSignalsType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateFleet

```erlang
valid {
    input.Body.fleetId == STRING
    input.Body.description == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateModelManifest

```erlang
enum_ManifestStatus := [ "ACTIVE", "DRAFT", "INVALID", "VALIDATING" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.nodesToAdd[_] == STRING
    input.Body.nodesToRemove[_] == STRING
    input.Body.status == enum_ManifestStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateSignalCatalog

```erlang
enum_NodeDataEncoding := [ "BINARY", "TYPED" ]
enum_NodeDataType := [ "INT8", "UINT8", "INT16", "UINT16", "INT32", "UINT32", "INT64", "UINT64", "BOOLEAN", "FLOAT", "DOUBLE", "STRING", "UNIX_TIMESTAMP", "INT8_ARRAY", "UINT8_ARRAY", "INT16_ARRAY", "UINT16_ARRAY", "INT32_ARRAY", "UINT32_ARRAY", "INT64_ARRAY", "UINT64_ARRAY", "BOOLEAN_ARRAY", "FLOAT_ARRAY", "DOUBLE_ARRAY", "STRING_ARRAY", "UNIX_TIMESTAMP_ARRAY", "UNKNOWN", "STRUCT", "STRUCT_ARRAY" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.nodesToAdd[_].branch.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].branch.description == STRING
    input.Body.nodesToAdd[_].branch.deprecationMessage == STRING
    input.Body.nodesToAdd[_].branch.comment == STRING
    input.Body.nodesToAdd[_].sensor.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].sensor.dataType == enum_NodeDataType[_]
    input.Body.nodesToAdd[_].sensor.description == STRING
    input.Body.nodesToAdd[_].sensor.unit == STRING
    input.Body.nodesToAdd[_].sensor.allowedValues[_] == STRING
    input.Body.nodesToAdd[_].sensor.min == DOUBLE
    input.Body.nodesToAdd[_].sensor.max == DOUBLE
    input.Body.nodesToAdd[_].sensor.deprecationMessage == STRING
    input.Body.nodesToAdd[_].sensor.comment == STRING
    input.Body.nodesToAdd[_].sensor.structFullyQualifiedName == STRING
    input.Body.nodesToAdd[_].actuator.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].actuator.dataType == enum_NodeDataType[_]
    input.Body.nodesToAdd[_].actuator.description == STRING
    input.Body.nodesToAdd[_].actuator.unit == STRING
    input.Body.nodesToAdd[_].actuator.allowedValues[_] == STRING
    input.Body.nodesToAdd[_].actuator.min == DOUBLE
    input.Body.nodesToAdd[_].actuator.max == DOUBLE
    input.Body.nodesToAdd[_].actuator.assignedValue == STRING
    input.Body.nodesToAdd[_].actuator.deprecationMessage == STRING
    input.Body.nodesToAdd[_].actuator.comment == STRING
    input.Body.nodesToAdd[_].actuator.structFullyQualifiedName == STRING
    input.Body.nodesToAdd[_].attribute.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].attribute.dataType == enum_NodeDataType[_]
    input.Body.nodesToAdd[_].attribute.description == STRING
    input.Body.nodesToAdd[_].attribute.unit == STRING
    input.Body.nodesToAdd[_].attribute.allowedValues[_] == STRING
    input.Body.nodesToAdd[_].attribute.min == DOUBLE
    input.Body.nodesToAdd[_].attribute.max == DOUBLE
    input.Body.nodesToAdd[_].attribute.assignedValue == STRING
    input.Body.nodesToAdd[_].attribute.defaultValue == STRING
    input.Body.nodesToAdd[_].attribute.deprecationMessage == STRING
    input.Body.nodesToAdd[_].attribute.comment == STRING
    input.Body.nodesToAdd[_].struct.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].struct.description == STRING
    input.Body.nodesToAdd[_].struct.deprecationMessage == STRING
    input.Body.nodesToAdd[_].struct.comment == STRING
    input.Body.nodesToAdd[_].property.fullyQualifiedName == STRING
    input.Body.nodesToAdd[_].property.dataType == enum_NodeDataType[_]
    input.Body.nodesToAdd[_].property.dataEncoding == enum_NodeDataEncoding[_]
    input.Body.nodesToAdd[_].property.description == STRING
    input.Body.nodesToAdd[_].property.deprecationMessage == STRING
    input.Body.nodesToAdd[_].property.comment == STRING
    input.Body.nodesToAdd[_].property.structFullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].branch.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].branch.description == STRING
    input.Body.nodesToUpdate[_].branch.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].branch.comment == STRING
    input.Body.nodesToUpdate[_].sensor.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].sensor.dataType == enum_NodeDataType[_]
    input.Body.nodesToUpdate[_].sensor.description == STRING
    input.Body.nodesToUpdate[_].sensor.unit == STRING
    input.Body.nodesToUpdate[_].sensor.allowedValues[_] == STRING
    input.Body.nodesToUpdate[_].sensor.min == DOUBLE
    input.Body.nodesToUpdate[_].sensor.max == DOUBLE
    input.Body.nodesToUpdate[_].sensor.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].sensor.comment == STRING
    input.Body.nodesToUpdate[_].sensor.structFullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].actuator.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].actuator.dataType == enum_NodeDataType[_]
    input.Body.nodesToUpdate[_].actuator.description == STRING
    input.Body.nodesToUpdate[_].actuator.unit == STRING
    input.Body.nodesToUpdate[_].actuator.allowedValues[_] == STRING
    input.Body.nodesToUpdate[_].actuator.min == DOUBLE
    input.Body.nodesToUpdate[_].actuator.max == DOUBLE
    input.Body.nodesToUpdate[_].actuator.assignedValue == STRING
    input.Body.nodesToUpdate[_].actuator.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].actuator.comment == STRING
    input.Body.nodesToUpdate[_].actuator.structFullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].attribute.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].attribute.dataType == enum_NodeDataType[_]
    input.Body.nodesToUpdate[_].attribute.description == STRING
    input.Body.nodesToUpdate[_].attribute.unit == STRING
    input.Body.nodesToUpdate[_].attribute.allowedValues[_] == STRING
    input.Body.nodesToUpdate[_].attribute.min == DOUBLE
    input.Body.nodesToUpdate[_].attribute.max == DOUBLE
    input.Body.nodesToUpdate[_].attribute.assignedValue == STRING
    input.Body.nodesToUpdate[_].attribute.defaultValue == STRING
    input.Body.nodesToUpdate[_].attribute.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].attribute.comment == STRING
    input.Body.nodesToUpdate[_].struct.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].struct.description == STRING
    input.Body.nodesToUpdate[_].struct.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].struct.comment == STRING
    input.Body.nodesToUpdate[_].property.fullyQualifiedName == STRING
    input.Body.nodesToUpdate[_].property.dataType == enum_NodeDataType[_]
    input.Body.nodesToUpdate[_].property.dataEncoding == enum_NodeDataEncoding[_]
    input.Body.nodesToUpdate[_].property.description == STRING
    input.Body.nodesToUpdate[_].property.deprecationMessage == STRING
    input.Body.nodesToUpdate[_].property.comment == STRING
    input.Body.nodesToUpdate[_].property.structFullyQualifiedName == STRING
    input.Body.nodesToRemove[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateStateTemplate

```erlang
valid {
    input.Body.identifier == STRING
    input.Body.description == STRING
    input.Body.stateTemplatePropertiesToAdd[_] == STRING
    input.Body.stateTemplatePropertiesToRemove[_] == STRING
    input.Body.dataExtraDimensions[_] == STRING
    input.Body.metadataExtraDimensions[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```

# UpdateVehicle

```erlang
enum_TimeUnit := [ "MILLISECOND", "SECOND", "MINUTE", "HOUR" ]
enum_UpdateMode := [ "Overwrite", "Merge" ]

valid {
    input.Body.vehicleName == STRING
    input.Body.modelManifestArn == STRING
    input.Body.decoderManifestArn == STRING
    input.Body.attributes.STRING == STRING
    input.Body.attributeUpdateMode == enum_UpdateMode[_]
    input.Body.stateTemplatesToAdd[_].identifier == STRING
    input.Body.stateTemplatesToAdd[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.stateTemplatesToAdd[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.stateTemplatesToAdd[_].stateTemplateUpdateStrategy.onChange == {}
    input.Body.stateTemplatesToRemove[_] == STRING
    input.Body.stateTemplatesToUpdate[_].identifier == STRING
    input.Body.stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.unit == enum_TimeUnit[_]
    input.Body.stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.periodic.stateTemplateUpdateRate.value == INTEGER
    input.Body.stateTemplatesToUpdate[_].stateTemplateUpdateStrategy.onChange == {}
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}
```