CancelJob

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

CreateComputeEnvironment

enum_CEState := [ "ENABLED", "DISABLED" ]
enum_CEType := [ "MANAGED", "UNMANAGED" ]
enum_CRAllocationStrategy := [ "BEST_FIT", "BEST_FIT_PROGRESSIVE", "SPOT_CAPACITY_OPTIMIZED", "SPOT_PRICE_CAPACITY_OPTIMIZED" ]
enum_CRType := [ "EC2", "SPOT", "FARGATE", "FARGATE_SPOT" ]

valid {
    input.Body.computeEnvironmentName == STRING
    input.Body.type == enum_CEType[_]
    input.Body.state == enum_CEState[_]
    input.Body.unmanagedvCpus == INTEGER
    input.Body.computeResources.type == enum_CRType[_]
    input.Body.computeResources.allocationStrategy == enum_CRAllocationStrategy[_]
    input.Body.computeResources.minvCpus == INTEGER
    input.Body.computeResources.maxvCpus == INTEGER
    input.Body.computeResources.desiredvCpus == INTEGER
    input.Body.computeResources.instanceTypes[_] == STRING
    input.Body.computeResources.imageId == STRING
    input.Body.computeResources.subnets[_] == STRING
    input.Body.computeResources.securityGroupIds[_] == STRING
    input.Body.computeResources.ec2KeyPair == STRING
    input.Body.computeResources.instanceRole == STRING
    input.Body.computeResources.tags.STRING == STRING
    input.Body.computeResources.placementGroup == STRING
    input.Body.computeResources.bidPercentage == INTEGER
    input.Body.computeResources.spotIamFleetRole == STRING
    input.Body.computeResources.launchTemplate.launchTemplateId == STRING
    input.Body.computeResources.launchTemplate.launchTemplateName == STRING
    input.Body.computeResources.launchTemplate.version == STRING
    input.Body.computeResources.ec2Configuration[_].imageType == STRING
    input.Body.computeResources.ec2Configuration[_].imageIdOverride == STRING
    input.Body.computeResources.ec2Configuration[_].imageKubernetesVersion == STRING
    input.Body.serviceRole == STRING
    input.Body.tags.STRING == STRING
    input.Body.eksConfiguration.eksClusterArn == STRING
    input.Body.eksConfiguration.kubernetesNamespace == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateJobQueue

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

valid {
    input.Body.jobQueueName == STRING
    input.Body.state == enum_JQState[_]
    input.Body.schedulingPolicyArn == STRING
    input.Body.priority == INTEGER
    input.Body.computeEnvironmentOrder[_].order == INTEGER
    input.Body.computeEnvironmentOrder[_].computeEnvironment == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateSchedulingPolicy

valid {
    input.Body.name == STRING
    input.Body.fairsharePolicy.shareDecaySeconds == INTEGER
    input.Body.fairsharePolicy.computeReservation == INTEGER
    input.Body.fairsharePolicy.shareDistribution[_].shareIdentifier == STRING
    input.Body.fairsharePolicy.shareDistribution[_].weightFactor == FLOAT
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteComputeEnvironment

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

DeleteJobQueue

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

DeleteSchedulingPolicy

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

DeregisterJobDefinition

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

DescribeComputeEnvironments

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

DescribeJobDefinitions

valid {
    input.Body.jobDefinitions[_] == STRING
    input.Body.maxResults == INTEGER
    input.Body.jobDefinitionName == STRING
    input.Body.status == STRING
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeJobQueues

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

DescribeJobs

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

DescribeSchedulingPolicies

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

ListJobs

enum_JobStatus := [ "SUBMITTED", "PENDING", "RUNNABLE", "STARTING", "RUNNING", "SUCCEEDED", "FAILED" ]

valid {
    input.Body.jobQueue == STRING
    input.Body.arrayJobId == STRING
    input.Body.multiNodeJobId == STRING
    input.Body.jobStatus == enum_JobStatus[_]
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.filters[_].name == STRING
    input.Body.filters[_].values[_] == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSchedulingPolicies

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

ListTagsForResource

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

RegisterJobDefinition

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_DeviceCgroupPermission := [ "READ", "WRITE", "MKNOD" ]
enum_EFSAuthorizationConfigIAM := [ "ENABLED", "DISABLED" ]
enum_EFSTransitEncryption := [ "ENABLED", "DISABLED" ]
enum_JobDefinitionType := [ "container", "multinode" ]
enum_LogDriver := [ "json-file", "syslog", "journald", "gelf", "fluentd", "awslogs", "splunk" ]
enum_PlatformCapability := [ "EC2", "FARGATE" ]
enum_ResourceType := [ "GPU", "VCPU", "MEMORY" ]
enum_RetryAction := [ "RETRY", "EXIT" ]

valid {
    input.Body.jobDefinitionName == STRING
    input.Body.type == enum_JobDefinitionType[_]
    input.Body.parameters.STRING == STRING
    input.Body.schedulingPriority == INTEGER
    input.Body.containerProperties.image == STRING
    input.Body.containerProperties.vcpus == INTEGER
    input.Body.containerProperties.memory == INTEGER
    input.Body.containerProperties.command[_] == STRING
    input.Body.containerProperties.jobRoleArn == STRING
    input.Body.containerProperties.executionRoleArn == STRING
    input.Body.containerProperties.volumes[_].host.sourcePath == STRING
    input.Body.containerProperties.volumes[_].name == STRING
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.fileSystemId == STRING
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.rootDirectory == STRING
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.transitEncryption == enum_EFSTransitEncryption[_]
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.transitEncryptionPort == INTEGER
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.authorizationConfig.accessPointId == STRING
    input.Body.containerProperties.volumes[_].efsVolumeConfiguration.authorizationConfig.iam == enum_EFSAuthorizationConfigIAM[_]
    input.Body.containerProperties.environment[_].name == STRING
    input.Body.containerProperties.environment[_].value == STRING
    input.Body.containerProperties.mountPoints[_].containerPath == STRING
    input.Body.containerProperties.mountPoints[_].readOnly == BOOLEAN
    input.Body.containerProperties.mountPoints[_].sourceVolume == STRING
    input.Body.containerProperties.readonlyRootFilesystem == BOOLEAN
    input.Body.containerProperties.privileged == BOOLEAN
    input.Body.containerProperties.ulimits[_].hardLimit == INTEGER
    input.Body.containerProperties.ulimits[_].name == STRING
    input.Body.containerProperties.ulimits[_].softLimit == INTEGER
    input.Body.containerProperties.user == STRING
    input.Body.containerProperties.instanceType == STRING
    input.Body.containerProperties.resourceRequirements[_].value == STRING
    input.Body.containerProperties.resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.containerProperties.linuxParameters.devices[_].hostPath == STRING
    input.Body.containerProperties.linuxParameters.devices[_].containerPath == STRING
    input.Body.containerProperties.linuxParameters.devices[_].permissions[_] == enum_DeviceCgroupPermission[_]
    input.Body.containerProperties.linuxParameters.initProcessEnabled == BOOLEAN
    input.Body.containerProperties.linuxParameters.sharedMemorySize == INTEGER
    input.Body.containerProperties.linuxParameters.tmpfs[_].containerPath == STRING
    input.Body.containerProperties.linuxParameters.tmpfs[_].size == INTEGER
    input.Body.containerProperties.linuxParameters.tmpfs[_].mountOptions[_] == STRING
    input.Body.containerProperties.linuxParameters.maxSwap == INTEGER
    input.Body.containerProperties.linuxParameters.swappiness == INTEGER
    input.Body.containerProperties.logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.containerProperties.logConfiguration.options.STRING == STRING
    input.Body.containerProperties.logConfiguration.secretOptions[_].name == STRING
    input.Body.containerProperties.logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.containerProperties.secrets[_].name == STRING
    input.Body.containerProperties.secrets[_].valueFrom == STRING
    input.Body.containerProperties.networkConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.containerProperties.fargatePlatformConfiguration.platformVersion == STRING
    input.Body.containerProperties.ephemeralStorage.sizeInGiB == INTEGER
    input.Body.containerProperties.runtimePlatform.operatingSystemFamily == STRING
    input.Body.containerProperties.runtimePlatform.cpuArchitecture == STRING
    input.Body.containerProperties.repositoryCredentials.credentialsParameter == STRING
    input.Body.nodeProperties.numNodes == INTEGER
    input.Body.nodeProperties.mainNode == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].targetNodes == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.image == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.vcpus == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.memory == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.command[_] == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.jobRoleArn == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.executionRoleArn == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].host.sourcePath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.fileSystemId == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.rootDirectory == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.transitEncryption == enum_EFSTransitEncryption[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.transitEncryptionPort == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.authorizationConfig.accessPointId == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.volumes[_].efsVolumeConfiguration.authorizationConfig.iam == enum_EFSAuthorizationConfigIAM[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.environment[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.environment[_].value == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.mountPoints[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.mountPoints[_].readOnly == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].container.mountPoints[_].sourceVolume == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.readonlyRootFilesystem == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].container.privileged == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].container.ulimits[_].hardLimit == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.ulimits[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.ulimits[_].softLimit == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.user == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.instanceType == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.resourceRequirements[_].value == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.devices[_].hostPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.devices[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.devices[_].permissions[_] == enum_DeviceCgroupPermission[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.initProcessEnabled == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.sharedMemorySize == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.tmpfs[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.tmpfs[_].size == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.tmpfs[_].mountOptions[_] == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.maxSwap == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.linuxParameters.swappiness == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.logConfiguration.options.STRING == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.logConfiguration.secretOptions[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.secrets[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.secrets[_].valueFrom == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.networkConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.nodeProperties.nodeRangeProperties[_].container.fargatePlatformConfiguration.platformVersion == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.ephemeralStorage.sizeInGiB == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].container.runtimePlatform.operatingSystemFamily == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.runtimePlatform.cpuArchitecture == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].container.repositoryCredentials.credentialsParameter == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].instanceTypes[_] == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].command[_] == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].dependsOn[_].containerName == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].dependsOn[_].condition == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].environment[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].environment[_].value == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].essential == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].image == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].hostPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].permissions[_] == enum_DeviceCgroupPermission[_]
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.initProcessEnabled == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.sharedMemorySize == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].size == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].mountOptions[_] == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.maxSwap == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].linuxParameters.swappiness == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].logConfiguration.options.STRING == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].logConfiguration.secretOptions[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].mountPoints[_].containerPath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].mountPoints[_].readOnly == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].mountPoints[_].sourceVolume == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].privileged == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].readonlyRootFilesystem == BOOLEAN
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].repositoryCredentials.credentialsParameter == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].resourceRequirements[_].value == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].secrets[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].secrets[_].valueFrom == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].ulimits[_].hardLimit == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].ulimits[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].ulimits[_].softLimit == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].containers[_].user == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].ephemeralStorage.sizeInGiB == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].executionRoleArn == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].platformVersion == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].ipcMode == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].taskRoleArn == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].pidMode == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].networkConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].runtimePlatform.operatingSystemFamily == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].runtimePlatform.cpuArchitecture == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].host.sourcePath == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].name == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.fileSystemId == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.rootDirectory == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.transitEncryption == enum_EFSTransitEncryption[_]
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.transitEncryptionPort == INTEGER
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.authorizationConfig.accessPointId == STRING
    input.Body.nodeProperties.nodeRangeProperties[_].ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.authorizationConfig.iam == enum_EFSAuthorizationConfigIAM[_]
    input.Body.retryStrategy.attempts == INTEGER
    input.Body.retryStrategy.evaluateOnExit[_].onStatusReason == STRING
    input.Body.retryStrategy.evaluateOnExit[_].onReason == STRING
    input.Body.retryStrategy.evaluateOnExit[_].onExitCode == STRING
    input.Body.retryStrategy.evaluateOnExit[_].action == enum_RetryAction[_]
    input.Body.propagateTags == BOOLEAN
    input.Body.timeout.attemptDurationSeconds == INTEGER
    input.Body.tags.STRING == STRING
    input.Body.platformCapabilities[_] == enum_PlatformCapability[_]
    input.Body.eksProperties.podProperties.serviceAccountName == STRING
    input.Body.eksProperties.podProperties.hostNetwork == BOOLEAN
    input.Body.eksProperties.podProperties.dnsPolicy == STRING
    input.Body.eksProperties.podProperties.containers[_].name == STRING
    input.Body.eksProperties.podProperties.containers[_].image == STRING
    input.Body.eksProperties.podProperties.containers[_].imagePullPolicy == STRING
    input.Body.eksProperties.podProperties.containers[_].command[_] == STRING
    input.Body.eksProperties.podProperties.containers[_].args[_] == STRING
    input.Body.eksProperties.podProperties.containers[_].env[_].name == STRING
    input.Body.eksProperties.podProperties.containers[_].env[_].value == STRING
    input.Body.eksProperties.podProperties.containers[_].resources.limits.STRING == STRING
    input.Body.eksProperties.podProperties.containers[_].resources.requests.STRING == STRING
    input.Body.eksProperties.podProperties.containers[_].volumeMounts[_].name == STRING
    input.Body.eksProperties.podProperties.containers[_].volumeMounts[_].mountPath == STRING
    input.Body.eksProperties.podProperties.containers[_].volumeMounts[_].readOnly == BOOLEAN
    input.Body.eksProperties.podProperties.containers[_].securityContext.runAsUser == LONG
    input.Body.eksProperties.podProperties.containers[_].securityContext.runAsGroup == LONG
    input.Body.eksProperties.podProperties.containers[_].securityContext.privileged == BOOLEAN
    input.Body.eksProperties.podProperties.containers[_].securityContext.readOnlyRootFilesystem == BOOLEAN
    input.Body.eksProperties.podProperties.containers[_].securityContext.runAsNonRoot == BOOLEAN
    input.Body.eksProperties.podProperties.initContainers[_].name == STRING
    input.Body.eksProperties.podProperties.initContainers[_].image == STRING
    input.Body.eksProperties.podProperties.initContainers[_].imagePullPolicy == STRING
    input.Body.eksProperties.podProperties.initContainers[_].command[_] == STRING
    input.Body.eksProperties.podProperties.initContainers[_].args[_] == STRING
    input.Body.eksProperties.podProperties.initContainers[_].env[_].name == STRING
    input.Body.eksProperties.podProperties.initContainers[_].env[_].value == STRING
    input.Body.eksProperties.podProperties.initContainers[_].resources.limits.STRING == STRING
    input.Body.eksProperties.podProperties.initContainers[_].resources.requests.STRING == STRING
    input.Body.eksProperties.podProperties.initContainers[_].volumeMounts[_].name == STRING
    input.Body.eksProperties.podProperties.initContainers[_].volumeMounts[_].mountPath == STRING
    input.Body.eksProperties.podProperties.initContainers[_].volumeMounts[_].readOnly == BOOLEAN
    input.Body.eksProperties.podProperties.initContainers[_].securityContext.runAsUser == LONG
    input.Body.eksProperties.podProperties.initContainers[_].securityContext.runAsGroup == LONG
    input.Body.eksProperties.podProperties.initContainers[_].securityContext.privileged == BOOLEAN
    input.Body.eksProperties.podProperties.initContainers[_].securityContext.readOnlyRootFilesystem == BOOLEAN
    input.Body.eksProperties.podProperties.initContainers[_].securityContext.runAsNonRoot == BOOLEAN
    input.Body.eksProperties.podProperties.volumes[_].name == STRING
    input.Body.eksProperties.podProperties.volumes[_].hostPath.path == STRING
    input.Body.eksProperties.podProperties.volumes[_].emptyDir.medium == STRING
    input.Body.eksProperties.podProperties.volumes[_].emptyDir.sizeLimit == STRING
    input.Body.eksProperties.podProperties.volumes[_].secret.secretName == STRING
    input.Body.eksProperties.podProperties.volumes[_].secret.optional == BOOLEAN
    input.Body.eksProperties.podProperties.metadata.labels.STRING == STRING
    input.Body.eksProperties.podProperties.shareProcessNamespace == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].command[_] == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].dependsOn[_].containerName == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].dependsOn[_].condition == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].environment[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].environment[_].value == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].essential == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].image == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].hostPath == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].containerPath == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.devices[_].permissions[_] == enum_DeviceCgroupPermission[_]
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.initProcessEnabled == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.sharedMemorySize == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].containerPath == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].size == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.tmpfs[_].mountOptions[_] == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.maxSwap == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].linuxParameters.swappiness == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.ecsProperties.taskProperties[_].containers[_].logConfiguration.options.STRING == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].logConfiguration.secretOptions[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].mountPoints[_].containerPath == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].mountPoints[_].readOnly == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].mountPoints[_].sourceVolume == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].privileged == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].readonlyRootFilesystem == BOOLEAN
    input.Body.ecsProperties.taskProperties[_].containers[_].repositoryCredentials.credentialsParameter == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].resourceRequirements[_].value == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.ecsProperties.taskProperties[_].containers[_].secrets[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].secrets[_].valueFrom == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].ulimits[_].hardLimit == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].ulimits[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].containers[_].ulimits[_].softLimit == INTEGER
    input.Body.ecsProperties.taskProperties[_].containers[_].user == STRING
    input.Body.ecsProperties.taskProperties[_].ephemeralStorage.sizeInGiB == INTEGER
    input.Body.ecsProperties.taskProperties[_].executionRoleArn == STRING
    input.Body.ecsProperties.taskProperties[_].platformVersion == STRING
    input.Body.ecsProperties.taskProperties[_].ipcMode == STRING
    input.Body.ecsProperties.taskProperties[_].taskRoleArn == STRING
    input.Body.ecsProperties.taskProperties[_].pidMode == STRING
    input.Body.ecsProperties.taskProperties[_].networkConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.ecsProperties.taskProperties[_].runtimePlatform.operatingSystemFamily == STRING
    input.Body.ecsProperties.taskProperties[_].runtimePlatform.cpuArchitecture == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].host.sourcePath == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].name == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.fileSystemId == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.rootDirectory == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.transitEncryption == enum_EFSTransitEncryption[_]
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.transitEncryptionPort == INTEGER
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.authorizationConfig.accessPointId == STRING
    input.Body.ecsProperties.taskProperties[_].volumes[_].efsVolumeConfiguration.authorizationConfig.iam == enum_EFSAuthorizationConfigIAM[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SubmitJob

enum_ArrayJobDependency := [ "N_TO_N", "SEQUENTIAL" ]
enum_ResourceType := [ "GPU", "VCPU", "MEMORY" ]
enum_RetryAction := [ "RETRY", "EXIT" ]

valid {
    input.Body.jobName == STRING
    input.Body.jobQueue == STRING
    input.Body.shareIdentifier == STRING
    input.Body.schedulingPriorityOverride == INTEGER
    input.Body.arrayProperties.size == INTEGER
    input.Body.dependsOn[_].jobId == STRING
    input.Body.dependsOn[_].type == enum_ArrayJobDependency[_]
    input.Body.jobDefinition == STRING
    input.Body.parameters.STRING == STRING
    input.Body.containerOverrides.vcpus == INTEGER
    input.Body.containerOverrides.memory == INTEGER
    input.Body.containerOverrides.command[_] == STRING
    input.Body.containerOverrides.instanceType == STRING
    input.Body.containerOverrides.environment[_].name == STRING
    input.Body.containerOverrides.environment[_].value == STRING
    input.Body.containerOverrides.resourceRequirements[_].value == STRING
    input.Body.containerOverrides.resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.nodeOverrides.numNodes == INTEGER
    input.Body.nodeOverrides.nodePropertyOverrides[_].targetNodes == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.vcpus == INTEGER
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.memory == INTEGER
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.command[_] == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.instanceType == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.environment[_].name == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.environment[_].value == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.resourceRequirements[_].value == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].containerOverrides.resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].command[_] == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].environment[_].name == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].environment[_].value == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].name == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].resourceRequirements[_].value == STRING
    input.Body.nodeOverrides.nodePropertyOverrides[_].ecsPropertiesOverride.taskProperties[_].containers[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.nodeOverrides.nodePropertyOverrides[_].instanceTypes[_] == STRING
    input.Body.retryStrategy.attempts == INTEGER
    input.Body.retryStrategy.evaluateOnExit[_].onStatusReason == STRING
    input.Body.retryStrategy.evaluateOnExit[_].onReason == STRING
    input.Body.retryStrategy.evaluateOnExit[_].onExitCode == STRING
    input.Body.retryStrategy.evaluateOnExit[_].action == enum_RetryAction[_]
    input.Body.propagateTags == BOOLEAN
    input.Body.timeout.attemptDurationSeconds == INTEGER
    input.Body.tags.STRING == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].name == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].image == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].command[_] == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].args[_] == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].env[_].name == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].env[_].value == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].resources.limits.STRING == STRING
    input.Body.eksPropertiesOverride.podProperties.containers[_].resources.requests.STRING == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].name == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].image == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].command[_] == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].args[_] == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].env[_].name == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].env[_].value == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].resources.limits.STRING == STRING
    input.Body.eksPropertiesOverride.podProperties.initContainers[_].resources.requests.STRING == STRING
    input.Body.eksPropertiesOverride.podProperties.metadata.labels.STRING == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].command[_] == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].environment[_].name == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].environment[_].value == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].name == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].resourceRequirements[_].value == STRING
    input.Body.ecsPropertiesOverride.taskProperties[_].containers[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

TagResource

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

TerminateJob

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

UntagResource

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

UpdateComputeEnvironment

enum_CEState := [ "ENABLED", "DISABLED" ]
enum_CRType := [ "EC2", "SPOT", "FARGATE", "FARGATE_SPOT" ]
enum_CRUpdateAllocationStrategy := [ "BEST_FIT_PROGRESSIVE", "SPOT_CAPACITY_OPTIMIZED", "SPOT_PRICE_CAPACITY_OPTIMIZED" ]

valid {
    input.Body.computeEnvironment == STRING
    input.Body.state == enum_CEState[_]
    input.Body.unmanagedvCpus == INTEGER
    input.Body.computeResources.minvCpus == INTEGER
    input.Body.computeResources.maxvCpus == INTEGER
    input.Body.computeResources.desiredvCpus == INTEGER
    input.Body.computeResources.subnets[_] == STRING
    input.Body.computeResources.securityGroupIds[_] == STRING
    input.Body.computeResources.allocationStrategy == enum_CRUpdateAllocationStrategy[_]
    input.Body.computeResources.instanceTypes[_] == STRING
    input.Body.computeResources.ec2KeyPair == STRING
    input.Body.computeResources.instanceRole == STRING
    input.Body.computeResources.tags.STRING == STRING
    input.Body.computeResources.placementGroup == STRING
    input.Body.computeResources.bidPercentage == INTEGER
    input.Body.computeResources.launchTemplate.launchTemplateId == STRING
    input.Body.computeResources.launchTemplate.launchTemplateName == STRING
    input.Body.computeResources.launchTemplate.version == STRING
    input.Body.computeResources.ec2Configuration[_].imageType == STRING
    input.Body.computeResources.ec2Configuration[_].imageIdOverride == STRING
    input.Body.computeResources.ec2Configuration[_].imageKubernetesVersion == STRING
    input.Body.computeResources.updateToLatestImageVersion == BOOLEAN
    input.Body.computeResources.type == enum_CRType[_]
    input.Body.computeResources.imageId == STRING
    input.Body.serviceRole == STRING
    input.Body.updatePolicy.terminateJobsOnUpdate == BOOLEAN
    input.Body.updatePolicy.jobExecutionTimeoutMinutes == LONG
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateJobQueue

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

valid {
    input.Body.jobQueue == STRING
    input.Body.state == enum_JQState[_]
    input.Body.schedulingPolicyArn == STRING
    input.Body.priority == INTEGER
    input.Body.computeEnvironmentOrder[_].order == INTEGER
    input.Body.computeEnvironmentOrder[_].computeEnvironment == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSchedulingPolicy

valid {
    input.Body.arn == STRING
    input.Body.fairsharePolicy.shareDecaySeconds == INTEGER
    input.Body.fairsharePolicy.computeReservation == INTEGER
    input.Body.fairsharePolicy.shareDistribution[_].shareIdentifier == STRING
    input.Body.fairsharePolicy.shareDistribution[_].weightFactor == FLOAT
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}