DEVICEFARM

CreateDevicePool

enum_DeviceAttribute := [ "ARN", "PLATFORM", "FORM_FACTOR", "MANUFACTURER", "REMOTE_ACCESS_ENABLED", "REMOTE_DEBUG_ENABLED", "APPIUM_VERSION", "INSTANCE_ARN", "INSTANCE_LABELS", "FLEET_TYPE", "OS_VERSION", "MODEL", "AVAILABILITY" ]
enum_RuleOperator := [ "EQUALS", "LESS_THAN", "LESS_THAN_OR_EQUALS", "GREATER_THAN", "GREATER_THAN_OR_EQUALS", "IN", "NOT_IN", "CONTAINS" ]

valid {
    input.Body.projectArn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.rules[_].attribute == enum_DeviceAttribute[_]
    input.Body.rules[_].operator == enum_RuleOperator[_]
    input.Body.rules[_].value == STRING
    input.Body.maxDevices == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateInstanceProfile

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.packageCleanup == BOOLEAN
    input.Body.excludeAppPackagesFromCleanup[_] == STRING
    input.Body.rebootAfterUse == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateNetworkProfile

enum_NetworkProfileType := [ "CURATED", "PRIVATE" ]

valid {
    input.Body.projectArn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.type == enum_NetworkProfileType[_]
    input.Body.uplinkBandwidthBits == LONG
    input.Body.downlinkBandwidthBits == LONG
    input.Body.uplinkDelayMs == LONG
    input.Body.downlinkDelayMs == LONG
    input.Body.uplinkJitterMs == LONG
    input.Body.downlinkJitterMs == LONG
    input.Body.uplinkLossPercent == INTEGER
    input.Body.downlinkLossPercent == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateProject

valid {
    input.Body.name == STRING
    input.Body.defaultJobTimeoutMinutes == INTEGER
    input.Body.vpcConfig.securityGroupIds[_] == STRING
    input.Body.vpcConfig.subnetIds[_] == STRING
    input.Body.vpcConfig.vpcId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateRemoteAccessSession

enum_BillingMethod := [ "METERED", "UNMETERED" ]
enum_InteractionMode := [ "INTERACTIVE", "NO_VIDEO", "VIDEO_ONLY" ]

valid {
    input.Body.projectArn == STRING
    input.Body.deviceArn == STRING
    input.Body.instanceArn == STRING
    input.Body.sshPublicKey == STRING
    input.Body.remoteDebugEnabled == BOOLEAN
    input.Body.remoteRecordEnabled == BOOLEAN
    input.Body.remoteRecordAppArn == STRING
    input.Body.name == STRING
    input.Body.clientId == STRING
    input.Body.configuration.billingMethod == enum_BillingMethod[_]
    input.Body.configuration.vpceConfigurationArns[_] == STRING
    input.Body.interactionMode == enum_InteractionMode[_]
    input.Body.skipAppResign == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTestGridProject

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.vpcConfig.securityGroupIds[_] == STRING
    input.Body.vpcConfig.subnetIds[_] == STRING
    input.Body.vpcConfig.vpcId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTestGridUrl

valid {
    input.Body.projectArn == STRING
    input.Body.expiresInSeconds == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateUpload

enum_UploadType := [ "ANDROID_APP", "IOS_APP", "WEB_APP", "EXTERNAL_DATA", "APPIUM_JAVA_JUNIT_TEST_PACKAGE", "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "APPIUM_PYTHON_TEST_PACKAGE", "APPIUM_NODE_TEST_PACKAGE", "APPIUM_RUBY_TEST_PACKAGE", "APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE", "APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE", "APPIUM_WEB_PYTHON_TEST_PACKAGE", "APPIUM_WEB_NODE_TEST_PACKAGE", "APPIUM_WEB_RUBY_TEST_PACKAGE", "CALABASH_TEST_PACKAGE", "INSTRUMENTATION_TEST_PACKAGE", "UIAUTOMATION_TEST_PACKAGE", "UIAUTOMATOR_TEST_PACKAGE", "XCTEST_TEST_PACKAGE", "XCTEST_UI_TEST_PACKAGE", "APPIUM_JAVA_JUNIT_TEST_SPEC", "APPIUM_JAVA_TESTNG_TEST_SPEC", "APPIUM_PYTHON_TEST_SPEC", "APPIUM_NODE_TEST_SPEC", "APPIUM_RUBY_TEST_SPEC", "APPIUM_WEB_JAVA_JUNIT_TEST_SPEC", "APPIUM_WEB_JAVA_TESTNG_TEST_SPEC", "APPIUM_WEB_PYTHON_TEST_SPEC", "APPIUM_WEB_NODE_TEST_SPEC", "APPIUM_WEB_RUBY_TEST_SPEC", "INSTRUMENTATION_TEST_SPEC", "XCTEST_UI_TEST_SPEC" ]

valid {
    input.Body.projectArn == STRING
    input.Body.name == STRING
    input.Body.type == enum_UploadType[_]
    input.Body.contentType == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateVPCEConfiguration

valid {
    input.Body.vpceConfigurationName == STRING
    input.Body.vpceServiceName == STRING
    input.Body.serviceDnsName == STRING
    input.Body.vpceConfigurationDescription == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteDevicePool

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

DeleteInstanceProfile

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

DeleteNetworkProfile

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

DeleteProject

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

DeleteRemoteAccessSession

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

DeleteRun

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

DeleteTestGridProject

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

DeleteUpload

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

DeleteVPCEConfiguration

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

GetAccountSettings

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

GetDevice

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

GetDeviceInstance

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

GetDevicePool

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

GetDevicePoolCompatibility

enum_BillingMethod := [ "METERED", "UNMETERED" ]
enum_TestType := [ "BUILTIN_FUZZ", "APPIUM_JAVA_JUNIT", "APPIUM_JAVA_TESTNG", "APPIUM_PYTHON", "APPIUM_NODE", "APPIUM_RUBY", "APPIUM_WEB_JAVA_JUNIT", "APPIUM_WEB_JAVA_TESTNG", "APPIUM_WEB_PYTHON", "APPIUM_WEB_NODE", "APPIUM_WEB_RUBY", "INSTRUMENTATION", "XCTEST", "XCTEST_UI" ]

valid {
    input.Body.devicePoolArn == STRING
    input.Body.appArn == STRING
    input.Body.testType == enum_TestType[_]
    input.Body.test.type == enum_TestType[_]
    input.Body.test.testPackageArn == STRING
    input.Body.test.testSpecArn == STRING
    input.Body.test.filter == STRING
    input.Body.test.parameters.STRING == STRING
    input.Body.configuration.extraDataPackageArn == STRING
    input.Body.configuration.networkProfileArn == STRING
    input.Body.configuration.locale == STRING
    input.Body.configuration.location.latitude == DOUBLE
    input.Body.configuration.location.longitude == DOUBLE
    input.Body.configuration.vpceConfigurationArns[_] == STRING
    input.Body.configuration.customerArtifactPaths.iosPaths[_] == STRING
    input.Body.configuration.customerArtifactPaths.androidPaths[_] == STRING
    input.Body.configuration.customerArtifactPaths.deviceHostPaths[_] == STRING
    input.Body.configuration.radios.wifi == BOOLEAN
    input.Body.configuration.radios.bluetooth == BOOLEAN
    input.Body.configuration.radios.nfc == BOOLEAN
    input.Body.configuration.radios.gps == BOOLEAN
    input.Body.configuration.auxiliaryApps[_] == STRING
    input.Body.configuration.billingMethod == enum_BillingMethod[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetInstanceProfile

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

GetJob

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

GetNetworkProfile

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

GetOfferingStatus

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

GetProject

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

GetRemoteAccessSession

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

GetRun

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

GetSuite

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

GetTest

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

GetTestGridProject

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

GetTestGridSession

valid {
    input.Body.projectArn == STRING
    input.Body.sessionId == STRING
    input.Body.sessionArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetUpload

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

GetVPCEConfiguration

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

InstallToRemoteAccessSession

valid {
    input.Body.remoteAccessSessionArn == STRING
    input.Body.appArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListArtifacts

enum_ArtifactCategory := [ "SCREENSHOT", "FILE", "LOG" ]

valid {
    input.Body.arn == STRING
    input.Body.type == enum_ArtifactCategory[_]
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDeviceInstances

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

ListDevicePools

enum_DevicePoolType := [ "CURATED", "PRIVATE" ]

valid {
    input.Body.arn == STRING
    input.Body.type == enum_DevicePoolType[_]
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListDevices

enum_DeviceFilterAttribute := [ "ARN", "PLATFORM", "OS_VERSION", "MODEL", "AVAILABILITY", "FORM_FACTOR", "MANUFACTURER", "REMOTE_ACCESS_ENABLED", "REMOTE_DEBUG_ENABLED", "INSTANCE_ARN", "INSTANCE_LABELS", "FLEET_TYPE" ]
enum_RuleOperator := [ "EQUALS", "LESS_THAN", "LESS_THAN_OR_EQUALS", "GREATER_THAN", "GREATER_THAN_OR_EQUALS", "IN", "NOT_IN", "CONTAINS" ]

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.Body.filters[_].attribute == enum_DeviceFilterAttribute[_]
    input.Body.filters[_].operator == enum_RuleOperator[_]
    input.Body.filters[_].values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListInstanceProfiles

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

ListJobs

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListNetworkProfiles

enum_NetworkProfileType := [ "CURATED", "PRIVATE" ]

valid {
    input.Body.arn == STRING
    input.Body.type == enum_NetworkProfileType[_]
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListOfferingPromotions

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

ListOfferingTransactions

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

ListOfferings

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

ListProjects

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListRemoteAccessSessions

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListRuns

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSamples

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSuites

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

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

ListTestGridProjects

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

ListTestGridSessionActions

valid {
    input.Body.sessionArn == STRING
    input.Body.maxResult == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTestGridSessionArtifacts

enum_TestGridSessionArtifactCategory := [ "VIDEO", "LOG" ]

valid {
    input.Body.sessionArn == STRING
    input.Body.type == enum_TestGridSessionArtifactCategory[_]
    input.Body.maxResult == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTestGridSessions

enum_TestGridSessionStatus := [ "ACTIVE", "CLOSED", "ERRORED" ]

valid {
    input.Body.projectArn == STRING
    input.Body.status == enum_TestGridSessionStatus[_]
    input.Body.creationTimeAfter == TIMESTAMP
    input.Body.creationTimeBefore == TIMESTAMP
    input.Body.endTimeAfter == TIMESTAMP
    input.Body.endTimeBefore == TIMESTAMP
    input.Body.maxResult == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTests

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListUniqueProblems

valid {
    input.Body.arn == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListUploads

enum_UploadType := [ "ANDROID_APP", "IOS_APP", "WEB_APP", "EXTERNAL_DATA", "APPIUM_JAVA_JUNIT_TEST_PACKAGE", "APPIUM_JAVA_TESTNG_TEST_PACKAGE", "APPIUM_PYTHON_TEST_PACKAGE", "APPIUM_NODE_TEST_PACKAGE", "APPIUM_RUBY_TEST_PACKAGE", "APPIUM_WEB_JAVA_JUNIT_TEST_PACKAGE", "APPIUM_WEB_JAVA_TESTNG_TEST_PACKAGE", "APPIUM_WEB_PYTHON_TEST_PACKAGE", "APPIUM_WEB_NODE_TEST_PACKAGE", "APPIUM_WEB_RUBY_TEST_PACKAGE", "CALABASH_TEST_PACKAGE", "INSTRUMENTATION_TEST_PACKAGE", "UIAUTOMATION_TEST_PACKAGE", "UIAUTOMATOR_TEST_PACKAGE", "XCTEST_TEST_PACKAGE", "XCTEST_UI_TEST_PACKAGE", "APPIUM_JAVA_JUNIT_TEST_SPEC", "APPIUM_JAVA_TESTNG_TEST_SPEC", "APPIUM_PYTHON_TEST_SPEC", "APPIUM_NODE_TEST_SPEC", "APPIUM_RUBY_TEST_SPEC", "APPIUM_WEB_JAVA_JUNIT_TEST_SPEC", "APPIUM_WEB_JAVA_TESTNG_TEST_SPEC", "APPIUM_WEB_PYTHON_TEST_SPEC", "APPIUM_WEB_NODE_TEST_SPEC", "APPIUM_WEB_RUBY_TEST_SPEC", "INSTRUMENTATION_TEST_SPEC", "XCTEST_UI_TEST_SPEC" ]

valid {
    input.Body.arn == STRING
    input.Body.type == enum_UploadType[_]
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListVPCEConfigurations

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

PurchaseOffering

valid {
    input.Body.offeringId == STRING
    input.Body.quantity == INTEGER
    input.Body.offeringPromotionId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RenewOffering

valid {
    input.Body.offeringId == STRING
    input.Body.quantity == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ScheduleRun

enum_BillingMethod := [ "METERED", "UNMETERED" ]
enum_DeviceFilterAttribute := [ "ARN", "PLATFORM", "OS_VERSION", "MODEL", "AVAILABILITY", "FORM_FACTOR", "MANUFACTURER", "REMOTE_ACCESS_ENABLED", "REMOTE_DEBUG_ENABLED", "INSTANCE_ARN", "INSTANCE_LABELS", "FLEET_TYPE" ]
enum_RuleOperator := [ "EQUALS", "LESS_THAN", "LESS_THAN_OR_EQUALS", "GREATER_THAN", "GREATER_THAN_OR_EQUALS", "IN", "NOT_IN", "CONTAINS" ]
enum_TestType := [ "BUILTIN_FUZZ", "APPIUM_JAVA_JUNIT", "APPIUM_JAVA_TESTNG", "APPIUM_PYTHON", "APPIUM_NODE", "APPIUM_RUBY", "APPIUM_WEB_JAVA_JUNIT", "APPIUM_WEB_JAVA_TESTNG", "APPIUM_WEB_PYTHON", "APPIUM_WEB_NODE", "APPIUM_WEB_RUBY", "INSTRUMENTATION", "XCTEST", "XCTEST_UI" ]

valid {
    input.Body.projectArn == STRING
    input.Body.appArn == STRING
    input.Body.devicePoolArn == STRING
    input.Body.deviceSelectionConfiguration.filters[_].attribute == enum_DeviceFilterAttribute[_]
    input.Body.deviceSelectionConfiguration.filters[_].operator == enum_RuleOperator[_]
    input.Body.deviceSelectionConfiguration.filters[_].values[_] == STRING
    input.Body.deviceSelectionConfiguration.maxDevices == INTEGER
    input.Body.name == STRING
    input.Body.test.type == enum_TestType[_]
    input.Body.test.testPackageArn == STRING
    input.Body.test.testSpecArn == STRING
    input.Body.test.filter == STRING
    input.Body.test.parameters.STRING == STRING
    input.Body.configuration.extraDataPackageArn == STRING
    input.Body.configuration.networkProfileArn == STRING
    input.Body.configuration.locale == STRING
    input.Body.configuration.location.latitude == DOUBLE
    input.Body.configuration.location.longitude == DOUBLE
    input.Body.configuration.vpceConfigurationArns[_] == STRING
    input.Body.configuration.customerArtifactPaths.iosPaths[_] == STRING
    input.Body.configuration.customerArtifactPaths.androidPaths[_] == STRING
    input.Body.configuration.customerArtifactPaths.deviceHostPaths[_] == STRING
    input.Body.configuration.radios.wifi == BOOLEAN
    input.Body.configuration.radios.bluetooth == BOOLEAN
    input.Body.configuration.radios.nfc == BOOLEAN
    input.Body.configuration.radios.gps == BOOLEAN
    input.Body.configuration.auxiliaryApps[_] == STRING
    input.Body.configuration.billingMethod == enum_BillingMethod[_]
    input.Body.executionConfiguration.jobTimeoutMinutes == INTEGER
    input.Body.executionConfiguration.accountsCleanup == BOOLEAN
    input.Body.executionConfiguration.appPackagesCleanup == BOOLEAN
    input.Body.executionConfiguration.videoCapture == BOOLEAN
    input.Body.executionConfiguration.skipAppResign == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopJob

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

StopRemoteAccessSession

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

StopRun

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

TagResource

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

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

UpdateDeviceInstance

valid {
    input.Body.arn == STRING
    input.Body.profileArn == STRING
    input.Body.labels[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateDevicePool

enum_DeviceAttribute := [ "ARN", "PLATFORM", "FORM_FACTOR", "MANUFACTURER", "REMOTE_ACCESS_ENABLED", "REMOTE_DEBUG_ENABLED", "APPIUM_VERSION", "INSTANCE_ARN", "INSTANCE_LABELS", "FLEET_TYPE", "OS_VERSION", "MODEL", "AVAILABILITY" ]
enum_RuleOperator := [ "EQUALS", "LESS_THAN", "LESS_THAN_OR_EQUALS", "GREATER_THAN", "GREATER_THAN_OR_EQUALS", "IN", "NOT_IN", "CONTAINS" ]

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.rules[_].attribute == enum_DeviceAttribute[_]
    input.Body.rules[_].operator == enum_RuleOperator[_]
    input.Body.rules[_].value == STRING
    input.Body.maxDevices == INTEGER
    input.Body.clearMaxDevices == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateInstanceProfile

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.packageCleanup == BOOLEAN
    input.Body.excludeAppPackagesFromCleanup[_] == STRING
    input.Body.rebootAfterUse == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateNetworkProfile

enum_NetworkProfileType := [ "CURATED", "PRIVATE" ]

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.type == enum_NetworkProfileType[_]
    input.Body.uplinkBandwidthBits == LONG
    input.Body.downlinkBandwidthBits == LONG
    input.Body.uplinkDelayMs == LONG
    input.Body.downlinkDelayMs == LONG
    input.Body.uplinkJitterMs == LONG
    input.Body.downlinkJitterMs == LONG
    input.Body.uplinkLossPercent == INTEGER
    input.Body.downlinkLossPercent == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateProject

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.defaultJobTimeoutMinutes == INTEGER
    input.Body.vpcConfig.securityGroupIds[_] == STRING
    input.Body.vpcConfig.subnetIds[_] == STRING
    input.Body.vpcConfig.vpcId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTestGridProject

valid {
    input.Body.projectArn == STRING
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.vpcConfig.securityGroupIds[_] == STRING
    input.Body.vpcConfig.subnetIds[_] == STRING
    input.Body.vpcConfig.vpcId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateUpload

valid {
    input.Body.arn == STRING
    input.Body.name == STRING
    input.Body.contentType == STRING
    input.Body.editContent == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateVPCEConfiguration

valid {
    input.Body.arn == STRING
    input.Body.vpceConfigurationName == STRING
    input.Body.vpceServiceName == STRING
    input.Body.serviceDnsName == STRING
    input.Body.vpceConfigurationDescription == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}