IOTSITEWISE

AssociateAssets

valid {
    input.Body.hierarchyId == STRING
    input.Body.childAssetId == STRING
    input.Body.clientToken == STRING
    input.ReqMap.assetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

AssociateTimeSeriesToAssetProperty

valid {
    input.Body.clientToken == STRING
    input.Qs.alias == STRING
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchAssociateProjectAssets

valid {
    input.Body.assetIds[_] == STRING
    input.Body.clientToken == STRING
    input.ReqMap.projectId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchDisassociateProjectAssets

valid {
    input.Body.assetIds[_] == STRING
    input.Body.clientToken == STRING
    input.ReqMap.projectId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetAssetPropertyAggregates

enum_AggregateType := [ "AVERAGE", "COUNT", "MAXIMUM", "MINIMUM", "SUM", "STANDARD_DEVIATION" ]
enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]
enum_TimeOrdering := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.entries[_].entryId == STRING
    input.Body.entries[_].assetId == STRING
    input.Body.entries[_].propertyId == STRING
    input.Body.entries[_].propertyAlias == STRING
    input.Body.entries[_].aggregateTypes[_] == enum_AggregateType[_]
    input.Body.entries[_].resolution == STRING
    input.Body.entries[_].startDate == TIMESTAMP
    input.Body.entries[_].endDate == TIMESTAMP
    input.Body.entries[_].qualities[_] == enum_Quality[_]
    input.Body.entries[_].timeOrdering == enum_TimeOrdering[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetAssetPropertyValue

valid {
    input.Body.entries[_].entryId == STRING
    input.Body.entries[_].assetId == STRING
    input.Body.entries[_].propertyId == STRING
    input.Body.entries[_].propertyAlias == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetAssetPropertyValueHistory

enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]
enum_TimeOrdering := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.entries[_].entryId == STRING
    input.Body.entries[_].assetId == STRING
    input.Body.entries[_].propertyId == STRING
    input.Body.entries[_].propertyAlias == STRING
    input.Body.entries[_].startDate == TIMESTAMP
    input.Body.entries[_].endDate == TIMESTAMP
    input.Body.entries[_].qualities[_] == enum_Quality[_]
    input.Body.entries[_].timeOrdering == enum_TimeOrdering[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchPutAssetPropertyValue

enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]

valid {
    input.Body.entries[_].entryId == STRING
    input.Body.entries[_].assetId == STRING
    input.Body.entries[_].propertyId == STRING
    input.Body.entries[_].propertyAlias == STRING
    input.Body.entries[_].propertyValues[_].value.stringValue == STRING
    input.Body.entries[_].propertyValues[_].value.integerValue == INTEGER
    input.Body.entries[_].propertyValues[_].value.doubleValue == DOUBLE
    input.Body.entries[_].propertyValues[_].value.booleanValue == BOOLEAN
    input.Body.entries[_].propertyValues[_].timestamp.timeInSeconds == LONG
    input.Body.entries[_].propertyValues[_].timestamp.offsetInNanos == INTEGER
    input.Body.entries[_].propertyValues[_].quality == enum_Quality[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAccessPolicy

enum_Permission := [ "ADMINISTRATOR", "VIEWER" ]

valid {
    input.Body.accessPolicyIdentity.user.id == STRING
    input.Body.accessPolicyIdentity.group.id == STRING
    input.Body.accessPolicyIdentity.iamUser.arn == STRING
    input.Body.accessPolicyIdentity.iamRole.arn == STRING
    input.Body.accessPolicyResource.portal.id == STRING
    input.Body.accessPolicyResource.project.id == STRING
    input.Body.accessPolicyPermission == enum_Permission[_]
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAsset

valid {
    input.Body.assetName == STRING
    input.Body.assetModelId == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.Body.assetDescription == STRING
    input.Body.assetId == STRING
    input.Body.assetExternalId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAssetModel

enum_AssetModelType := [ "ASSET_MODEL", "COMPONENT_MODEL" ]
enum_ComputeLocation := [ "EDGE", "CLOUD" ]
enum_ForwardingConfigState := [ "DISABLED", "ENABLED" ]
enum_PropertyDataType := [ "STRING", "INTEGER", "DOUBLE", "BOOLEAN", "STRUCT" ]

valid {
    input.Body.assetModelName == STRING
    input.Body.assetModelDescription == STRING
    input.Body.assetModelProperties[_].name == STRING
    input.Body.assetModelProperties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelProperties[_].dataTypeSpec == STRING
    input.Body.assetModelProperties[_].unit == STRING
    input.Body.assetModelProperties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelProperties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelProperties[_].type.transform.expression == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelProperties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelProperties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelProperties[_].type.metric.expression == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelProperties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelProperties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelProperties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelProperties[_].id == STRING
    input.Body.assetModelProperties[_].externalId == STRING
    input.Body.assetModelHierarchies[_].name == STRING
    input.Body.assetModelHierarchies[_].childAssetModelId == STRING
    input.Body.assetModelHierarchies[_].id == STRING
    input.Body.assetModelHierarchies[_].externalId == STRING
    input.Body.assetModelCompositeModels[_].name == STRING
    input.Body.assetModelCompositeModels[_].description == STRING
    input.Body.assetModelCompositeModels[_].type == STRING
    input.Body.assetModelCompositeModels[_].properties[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelCompositeModels[_].properties[_].dataTypeSpec == STRING
    input.Body.assetModelCompositeModels[_].properties[_].unit == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.expression == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.expression == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModels[_].properties[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].externalId == STRING
    input.Body.assetModelCompositeModels[_].id == STRING
    input.Body.assetModelCompositeModels[_].externalId == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.Body.assetModelId == STRING
    input.Body.assetModelExternalId == STRING
    input.Body.assetModelType == enum_AssetModelType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAssetModelCompositeModel

enum_ComputeLocation := [ "EDGE", "CLOUD" ]
enum_ForwardingConfigState := [ "DISABLED", "ENABLED" ]
enum_PropertyDataType := [ "STRING", "INTEGER", "DOUBLE", "BOOLEAN", "STRUCT" ]

valid {
    input.Body.parentAssetModelCompositeModelId == STRING
    input.Body.assetModelCompositeModelExternalId == STRING
    input.Body.assetModelCompositeModelId == STRING
    input.Body.assetModelCompositeModelDescription == STRING
    input.Body.assetModelCompositeModelName == STRING
    input.Body.assetModelCompositeModelType == STRING
    input.Body.clientToken == STRING
    input.Body.composedAssetModelId == STRING
    input.Body.assetModelCompositeModelProperties[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelCompositeModelProperties[_].dataTypeSpec == STRING
    input.Body.assetModelCompositeModelProperties[_].unit == STRING
    input.Body.assetModelCompositeModelProperties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelCompositeModelProperties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModelProperties[_].type.transform.expression == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModelProperties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModelProperties[_].type.metric.expression == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModelProperties[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].externalId == STRING
    input.ReqMap.assetModelId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateBulkImportJob

enum_ColumnName := [ "ALIAS", "ASSET_ID", "PROPERTY_ID", "DATA_TYPE", "TIMESTAMP_SECONDS", "TIMESTAMP_NANO_OFFSET", "QUALITY", "VALUE" ]

valid {
    input.Body.jobName == STRING
    input.Body.jobRoleArn == STRING
    input.Body.files[_].bucket == STRING
    input.Body.files[_].key == STRING
    input.Body.files[_].versionId == STRING
    input.Body.errorReportLocation.bucket == STRING
    input.Body.errorReportLocation.prefix == STRING
    input.Body.jobConfiguration.fileFormat.csv.columnNames[_] == enum_ColumnName[_]
    input.Body.jobConfiguration.fileFormat.parquet == {}
    input.Body.adaptiveIngestion == BOOLEAN
    input.Body.deleteFilesAfterImport == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateDashboard

valid {
    input.Body.projectId == STRING
    input.Body.dashboardName == STRING
    input.Body.dashboardDescription == STRING
    input.Body.dashboardDefinition == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateGateway

valid {
    input.Body.gatewayName == STRING
    input.Body.gatewayPlatform.greengrass.groupArn == STRING
    input.Body.gatewayPlatform.greengrassV2.coreDeviceThingName == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePortal

enum_AuthMode := [ "IAM", "SSO" ]
enum_ImageFileType := [ "PNG" ]

valid {
    input.Body.portalName == STRING
    input.Body.portalDescription == STRING
    input.Body.portalContactEmail == STRING
    input.Body.clientToken == STRING
    input.Body.portalLogoImageFile.data == BLOB
    input.Body.portalLogoImageFile.type == enum_ImageFileType[_]
    input.Body.roleArn == STRING
    input.Body.tags.STRING == STRING
    input.Body.portalAuthMode == enum_AuthMode[_]
    input.Body.notificationSenderEmail == STRING
    input.Body.alarms.alarmRoleArn == STRING
    input.Body.alarms.notificationLambdaArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateProject

valid {
    input.Body.portalId == STRING
    input.Body.projectName == STRING
    input.Body.projectDescription == STRING
    input.Body.clientToken == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAccessPolicy

valid {
    input.ReqMap.accessPolicyId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAsset

valid {
    input.ReqMap.assetId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAssetModel

valid {
    input.ReqMap.assetModelId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAssetModelCompositeModel

valid {
    input.ReqMap.assetModelId == STRING
    input.ReqMap.assetModelCompositeModelId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteDashboard

valid {
    input.ReqMap.dashboardId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteGateway

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

DeletePortal

valid {
    input.ReqMap.portalId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteProject

valid {
    input.ReqMap.projectId == STRING
    input.Qs.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTimeSeries

valid {
    input.Body.clientToken == STRING
    input.Qs.alias == STRING
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAccessPolicy

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

DescribeAction

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

DescribeAsset

valid {
    input.ReqMap.assetId == STRING
    input.Qs.excludeProperties == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAssetCompositeModel

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

DescribeAssetModel

valid {
    input.ReqMap.assetModelId == STRING
    input.Qs.excludeProperties == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeAssetModelCompositeModel

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

DescribeAssetProperty

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

DescribeBulkImportJob

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

DescribeDashboard

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

DescribeDefaultEncryptionConfiguration

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

DescribeGateway

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

DescribeGatewayCapabilityConfiguration

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

DescribeLoggingOptions

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

DescribePortal

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

DescribeProject

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

DescribeStorageConfiguration

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

DescribeTimeSeries

valid {
    input.Qs.alias == STRING
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateAssets

valid {
    input.Body.hierarchyId == STRING
    input.Body.childAssetId == STRING
    input.Body.clientToken == STRING
    input.ReqMap.assetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DisassociateTimeSeriesFromAssetProperty

valid {
    input.Body.clientToken == STRING
    input.Qs.alias == STRING
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExecuteAction

valid {
    input.Body.targetResource.assetId == STRING
    input.Body.actionDefinitionId == STRING
    input.Body.actionPayload.stringValue == STRING
    input.Body.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ExecuteQuery

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

GetAssetPropertyAggregates

enum_AggregateType := [ "AVERAGE", "COUNT", "MAXIMUM", "MINIMUM", "SUM", "STANDARD_DEVIATION" ]
enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]
enum_TimeOrdering := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.Qs.propertyAlias == STRING
    input.Qs.aggregateTypes[_] == enum_AggregateType[_]
    input.Qs.resolution == STRING
    input.Qs.qualities[_] == enum_Quality[_]
    input.Qs.startDate == TIMESTAMP
    input.Qs.endDate == TIMESTAMP
    input.Qs.timeOrdering == enum_TimeOrdering[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAssetPropertyValue

valid {
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.Qs.propertyAlias == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetAssetPropertyValueHistory

enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]
enum_TimeOrdering := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.Qs.propertyAlias == STRING
    input.Qs.startDate == TIMESTAMP
    input.Qs.endDate == TIMESTAMP
    input.Qs.qualities[_] == enum_Quality[_]
    input.Qs.timeOrdering == enum_TimeOrdering[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetInterpolatedAssetPropertyValues

enum_Quality := [ "GOOD", "BAD", "UNCERTAIN" ]

valid {
    input.Qs.assetId == STRING
    input.Qs.propertyId == STRING
    input.Qs.propertyAlias == STRING
    input.Qs.startTimeInSeconds == LONG
    input.Qs.startTimeOffsetInNanos == INTEGER
    input.Qs.endTimeInSeconds == LONG
    input.Qs.endTimeOffsetInNanos == INTEGER
    input.Qs.quality == enum_Quality[_]
    input.Qs.intervalInSeconds == LONG
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.type == STRING
    input.Qs.intervalWindowInSeconds == LONG
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAccessPolicies

enum_IdentityType := [ "USER", "GROUP", "IAM" ]
enum_ResourceType := [ "PORTAL", "PROJECT" ]

valid {
    input.Qs.identityType == enum_IdentityType[_]
    input.Qs.identityId == STRING
    input.Qs.resourceType == enum_ResourceType[_]
    input.Qs.resourceId == STRING
    input.Qs.iamArn == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListActions

enum_TargetResourceType := [ "ASSET" ]

valid {
    input.Qs.targetResourceType == enum_TargetResourceType[_]
    input.Qs.targetResourceId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssetModelCompositeModels

valid {
    input.ReqMap.assetModelId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssetModelProperties

enum_ListAssetModelPropertiesFilter := [ "ALL", "BASE" ]

valid {
    input.ReqMap.assetModelId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.filter == enum_ListAssetModelPropertiesFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssetModels

enum_AssetModelType := [ "ASSET_MODEL", "COMPONENT_MODEL" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.assetModelTypes[_] == enum_AssetModelType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssetProperties

enum_ListAssetPropertiesFilter := [ "ALL", "BASE" ]

valid {
    input.ReqMap.assetId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.filter == enum_ListAssetPropertiesFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssetRelationships

enum_TraversalType := [ "PATH_TO_ROOT" ]

valid {
    input.ReqMap.assetId == STRING
    input.Qs.traversalType == enum_TraversalType[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssets

enum_ListAssetsFilter := [ "ALL", "TOP_LEVEL" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.assetModelId == STRING
    input.Qs.filter == enum_ListAssetsFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAssociatedAssets

enum_TraversalDirection := [ "PARENT", "CHILD" ]

valid {
    input.ReqMap.assetId == STRING
    input.Qs.hierarchyId == STRING
    input.Qs.traversalDirection == enum_TraversalDirection[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBulkImportJobs

enum_ListBulkImportJobsFilter := [ "ALL", "PENDING", "RUNNING", "CANCELLED", "FAILED", "COMPLETED_WITH_FAILURES", "COMPLETED" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.filter == enum_ListBulkImportJobsFilter[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCompositionRelationships

valid {
    input.ReqMap.assetModelId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDashboards

valid {
    input.Qs.projectId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGateways

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListPortals

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListProjectAssets

valid {
    input.ReqMap.projectId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListProjects

valid {
    input.Qs.portalId == STRING
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

valid {
    input.Qs.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTimeSeries

enum_ListTimeSeriesType := [ "ASSOCIATED", "DISASSOCIATED" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.assetId == STRING
    input.Qs.aliasPrefix == STRING
    input.Qs.timeSeriesType == enum_ListTimeSeriesType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutDefaultEncryptionConfiguration

enum_EncryptionType := [ "SITEWISE_DEFAULT_ENCRYPTION", "KMS_BASED_ENCRYPTION" ]

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

PutLoggingOptions

enum_LoggingLevel := [ "ERROR", "INFO", "OFF" ]

valid {
    input.Body.loggingOptions.level == enum_LoggingLevel[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutStorageConfiguration

enum_DisassociatedDataStorageState := [ "ENABLED", "DISABLED" ]
enum_StorageType := [ "SITEWISE_DEFAULT_STORAGE", "MULTI_LAYER_STORAGE" ]
enum_WarmTierState := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.storageType == enum_StorageType[_]
    input.Body.multiLayerStorage.customerManagedS3Storage.s3ResourceArn == STRING
    input.Body.multiLayerStorage.customerManagedS3Storage.roleArn == STRING
    input.Body.disassociatedDataStorage == enum_DisassociatedDataStorageState[_]
    input.Body.retentionPeriod.numberOfDays == INTEGER
    input.Body.retentionPeriod.unlimited == BOOLEAN
    input.Body.warmTier == enum_WarmTierState[_]
    input.Body.warmTierRetentionPeriod.numberOfDays == INTEGER
    input.Body.warmTierRetentionPeriod.unlimited == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

valid {
    input.Body.tags.STRING == STRING
    input.Qs.resourceArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UntagResource

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

UpdateAccessPolicy

enum_Permission := [ "ADMINISTRATOR", "VIEWER" ]

valid {
    input.Body.accessPolicyIdentity.user.id == STRING
    input.Body.accessPolicyIdentity.group.id == STRING
    input.Body.accessPolicyIdentity.iamUser.arn == STRING
    input.Body.accessPolicyIdentity.iamRole.arn == STRING
    input.Body.accessPolicyResource.portal.id == STRING
    input.Body.accessPolicyResource.project.id == STRING
    input.Body.accessPolicyPermission == enum_Permission[_]
    input.Body.clientToken == STRING
    input.ReqMap.accessPolicyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAsset

valid {
    input.Body.assetName == STRING
    input.Body.clientToken == STRING
    input.Body.assetDescription == STRING
    input.Body.assetExternalId == STRING
    input.ReqMap.assetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAssetModel

enum_ComputeLocation := [ "EDGE", "CLOUD" ]
enum_ForwardingConfigState := [ "DISABLED", "ENABLED" ]
enum_PropertyDataType := [ "STRING", "INTEGER", "DOUBLE", "BOOLEAN", "STRUCT" ]

valid {
    input.Body.assetModelName == STRING
    input.Body.assetModelDescription == STRING
    input.Body.assetModelProperties[_].id == STRING
    input.Body.assetModelProperties[_].name == STRING
    input.Body.assetModelProperties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelProperties[_].dataTypeSpec == STRING
    input.Body.assetModelProperties[_].unit == STRING
    input.Body.assetModelProperties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelProperties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelProperties[_].type.transform.expression == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelProperties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelProperties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelProperties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelProperties[_].type.metric.expression == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelProperties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelProperties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelProperties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelProperties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelProperties[_].path[_].id == STRING
    input.Body.assetModelProperties[_].path[_].name == STRING
    input.Body.assetModelProperties[_].externalId == STRING
    input.Body.assetModelHierarchies[_].id == STRING
    input.Body.assetModelHierarchies[_].name == STRING
    input.Body.assetModelHierarchies[_].childAssetModelId == STRING
    input.Body.assetModelHierarchies[_].externalId == STRING
    input.Body.assetModelCompositeModels[_].name == STRING
    input.Body.assetModelCompositeModels[_].description == STRING
    input.Body.assetModelCompositeModels[_].type == STRING
    input.Body.assetModelCompositeModels[_].properties[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelCompositeModels[_].properties[_].dataTypeSpec == STRING
    input.Body.assetModelCompositeModels[_].properties[_].unit == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.expression == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.expression == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelCompositeModels[_].properties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModels[_].properties[_].path[_].id == STRING
    input.Body.assetModelCompositeModels[_].properties[_].path[_].name == STRING
    input.Body.assetModelCompositeModels[_].properties[_].externalId == STRING
    input.Body.assetModelCompositeModels[_].id == STRING
    input.Body.assetModelCompositeModels[_].externalId == STRING
    input.Body.clientToken == STRING
    input.Body.assetModelExternalId == STRING
    input.ReqMap.assetModelId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAssetModelCompositeModel

enum_ComputeLocation := [ "EDGE", "CLOUD" ]
enum_ForwardingConfigState := [ "DISABLED", "ENABLED" ]
enum_PropertyDataType := [ "STRING", "INTEGER", "DOUBLE", "BOOLEAN", "STRUCT" ]

valid {
    input.Body.assetModelCompositeModelExternalId == STRING
    input.Body.assetModelCompositeModelDescription == STRING
    input.Body.assetModelCompositeModelName == STRING
    input.Body.clientToken == STRING
    input.Body.assetModelCompositeModelProperties[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].dataType == enum_PropertyDataType[_]
    input.Body.assetModelCompositeModelProperties[_].dataTypeSpec == STRING
    input.Body.assetModelCompositeModelProperties[_].unit == STRING
    input.Body.assetModelCompositeModelProperties[_].type.attribute.defaultValue == STRING
    input.Body.assetModelCompositeModelProperties[_].type.measurement.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModelProperties[_].type.transform.expression == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.transform.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModelProperties[_].type.transform.processingConfig.forwardingConfig.state == enum_ForwardingConfigState[_]
    input.Body.assetModelCompositeModelProperties[_].type.metric.expression == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.hierarchyId == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyPath[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.variables[_].value.propertyPath[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.window.tumbling.interval == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.window.tumbling.offset == STRING
    input.Body.assetModelCompositeModelProperties[_].type.metric.processingConfig.computeLocation == enum_ComputeLocation[_]
    input.Body.assetModelCompositeModelProperties[_].path[_].id == STRING
    input.Body.assetModelCompositeModelProperties[_].path[_].name == STRING
    input.Body.assetModelCompositeModelProperties[_].externalId == STRING
    input.ReqMap.assetModelId == STRING
    input.ReqMap.assetModelCompositeModelId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateAssetProperty

enum_PropertyNotificationState := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.propertyAlias == STRING
    input.Body.propertyNotificationState == enum_PropertyNotificationState[_]
    input.Body.clientToken == STRING
    input.Body.propertyUnit == STRING
    input.ReqMap.assetId == STRING
    input.ReqMap.propertyId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateDashboard

valid {
    input.Body.dashboardName == STRING
    input.Body.dashboardDescription == STRING
    input.Body.dashboardDefinition == STRING
    input.Body.clientToken == STRING
    input.ReqMap.dashboardId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGateway

valid {
    input.Body.gatewayName == STRING
    input.ReqMap.gatewayId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGatewayCapabilityConfiguration

valid {
    input.Body.capabilityNamespace == STRING
    input.Body.capabilityConfiguration == STRING
    input.ReqMap.gatewayId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdatePortal

enum_ImageFileType := [ "PNG" ]

valid {
    input.Body.portalName == STRING
    input.Body.portalDescription == STRING
    input.Body.portalContactEmail == STRING
    input.Body.portalLogoImage.id == STRING
    input.Body.portalLogoImage.file.data == BLOB
    input.Body.portalLogoImage.file.type == enum_ImageFileType[_]
    input.Body.roleArn == STRING
    input.Body.clientToken == STRING
    input.Body.notificationSenderEmail == STRING
    input.Body.alarms.alarmRoleArn == STRING
    input.Body.alarms.notificationLambdaArn == STRING
    input.ReqMap.portalId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateProject

valid {
    input.Body.projectName == STRING
    input.Body.projectDescription == STRING
    input.Body.clientToken == STRING
    input.ReqMap.projectId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}