CreateCapacityProvider

enum_ManagedDraining := [ "ENABLED", "DISABLED" ]
enum_ManagedScalingStatus := [ "ENABLED", "DISABLED" ]
enum_ManagedTerminationProtection := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.name == STRING
    input.Body.autoScalingGroupProvider.autoScalingGroupArn == STRING
    input.Body.autoScalingGroupProvider.managedScaling.status == enum_ManagedScalingStatus[_]
    input.Body.autoScalingGroupProvider.managedScaling.targetCapacity == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.minimumScalingStepSize == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.maximumScalingStepSize == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.instanceWarmupPeriod == INTEGER
    input.Body.autoScalingGroupProvider.managedTerminationProtection == enum_ManagedTerminationProtection[_]
    input.Body.autoScalingGroupProvider.managedDraining == enum_ManagedDraining[_]
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateCluster

enum_ClusterSettingName := [ "containerInsights" ]
enum_ExecuteCommandLogging := [ "NONE", "DEFAULT", "OVERRIDE" ]

valid {
    input.Body.clusterName == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.settings[_].name == enum_ClusterSettingName[_]
    input.Body.settings[_].value == STRING
    input.Body.configuration.executeCommandConfiguration.kmsKeyId == STRING
    input.Body.configuration.executeCommandConfiguration.logging == enum_ExecuteCommandLogging[_]
    input.Body.configuration.executeCommandConfiguration.logConfiguration.cloudWatchLogGroupName == STRING
    input.Body.configuration.executeCommandConfiguration.logConfiguration.cloudWatchEncryptionEnabled == BOOLEAN
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3BucketName == STRING
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3EncryptionEnabled == BOOLEAN
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3KeyPrefix == STRING
    input.Body.capacityProviders[_] == STRING
    input.Body.defaultCapacityProviderStrategy[_].capacityProvider == STRING
    input.Body.defaultCapacityProviderStrategy[_].weight == INTEGER
    input.Body.defaultCapacityProviderStrategy[_].base == INTEGER
    input.Body.serviceConnectDefaults.namespace == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateService

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_DeploymentControllerType := [ "ECS", "CODE_DEPLOY", "EXTERNAL" ]
enum_EBSResourceType := [ "volume" ]
enum_LaunchType := [ "EC2", "FARGATE", "EXTERNAL" ]
enum_LogDriver := [ "json-file", "syslog", "journald", "gelf", "fluentd", "awslogs", "splunk", "awsfirelens" ]
enum_PlacementConstraintType := [ "distinctInstance", "memberOf" ]
enum_PlacementStrategyType := [ "random", "spread", "binpack" ]
enum_PropagateTags := [ "TASK_DEFINITION", "SERVICE", "NONE" ]
enum_SchedulingStrategy := [ "REPLICA", "DAEMON" ]
enum_TaskFilesystemType := [ "ext3", "ext4", "xfs" ]

valid {
    input.Body.cluster == STRING
    input.Body.serviceName == STRING
    input.Body.taskDefinition == STRING
    input.Body.loadBalancers[_].targetGroupArn == STRING
    input.Body.loadBalancers[_].loadBalancerName == STRING
    input.Body.loadBalancers[_].containerName == STRING
    input.Body.loadBalancers[_].containerPort == INTEGER
    input.Body.serviceRegistries[_].registryArn == STRING
    input.Body.serviceRegistries[_].port == INTEGER
    input.Body.serviceRegistries[_].containerName == STRING
    input.Body.serviceRegistries[_].containerPort == INTEGER
    input.Body.desiredCount == INTEGER
    input.Body.clientToken == STRING
    input.Body.launchType == enum_LaunchType[_]
    input.Body.capacityProviderStrategy[_].capacityProvider == STRING
    input.Body.capacityProviderStrategy[_].weight == INTEGER
    input.Body.capacityProviderStrategy[_].base == INTEGER
    input.Body.platformVersion == STRING
    input.Body.role == STRING
    input.Body.deploymentConfiguration.deploymentCircuitBreaker.enable == BOOLEAN
    input.Body.deploymentConfiguration.deploymentCircuitBreaker.rollback == BOOLEAN
    input.Body.deploymentConfiguration.maximumPercent == INTEGER
    input.Body.deploymentConfiguration.minimumHealthyPercent == INTEGER
    input.Body.deploymentConfiguration.alarms.alarmNames[_] == STRING
    input.Body.deploymentConfiguration.alarms.enable == BOOLEAN
    input.Body.deploymentConfiguration.alarms.rollback == BOOLEAN
    input.Body.placementConstraints[_].type == enum_PlacementConstraintType[_]
    input.Body.placementConstraints[_].expression == STRING
    input.Body.placementStrategy[_].type == enum_PlacementStrategyType[_]
    input.Body.placementStrategy[_].field == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.subnets[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.securityGroups[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.healthCheckGracePeriodSeconds == INTEGER
    input.Body.schedulingStrategy == enum_SchedulingStrategy[_]
    input.Body.deploymentController.type == enum_DeploymentControllerType[_]
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.enableECSManagedTags == BOOLEAN
    input.Body.propagateTags == enum_PropagateTags[_]
    input.Body.enableExecuteCommand == BOOLEAN
    input.Body.serviceConnectConfiguration.enabled == BOOLEAN
    input.Body.serviceConnectConfiguration.namespace == STRING
    input.Body.serviceConnectConfiguration.services[_].portName == STRING
    input.Body.serviceConnectConfiguration.services[_].discoveryName == STRING
    input.Body.serviceConnectConfiguration.services[_].clientAliases[_].port == INTEGER
    input.Body.serviceConnectConfiguration.services[_].clientAliases[_].dnsName == STRING
    input.Body.serviceConnectConfiguration.services[_].ingressPortOverride == INTEGER
    input.Body.serviceConnectConfiguration.services[_].timeout.idleTimeoutSeconds == INTEGER
    input.Body.serviceConnectConfiguration.services[_].timeout.perRequestTimeoutSeconds == INTEGER
    input.Body.serviceConnectConfiguration.services[_].tls.issuerCertificateAuthority.awsPcaAuthorityArn == STRING
    input.Body.serviceConnectConfiguration.services[_].tls.kmsKey == STRING
    input.Body.serviceConnectConfiguration.services[_].tls.roleArn == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.serviceConnectConfiguration.logConfiguration.options.STRING == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.secretOptions[_].name == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.volumeConfigurations[_].name == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.encrypted == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.kmsKeyId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.volumeType == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.sizeInGiB == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.snapshotId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.iops == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.throughput == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].resourceType == enum_EBSResourceType[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].key == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].value == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].propagateTags == enum_PropagateTags[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.roleArn == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.filesystemType == enum_TaskFilesystemType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTaskSet

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_LaunchType := [ "EC2", "FARGATE", "EXTERNAL" ]
enum_ScaleUnit := [ "PERCENT" ]

valid {
    input.Body.service == STRING
    input.Body.cluster == STRING
    input.Body.externalId == STRING
    input.Body.taskDefinition == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.subnets[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.securityGroups[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.loadBalancers[_].targetGroupArn == STRING
    input.Body.loadBalancers[_].loadBalancerName == STRING
    input.Body.loadBalancers[_].containerName == STRING
    input.Body.loadBalancers[_].containerPort == INTEGER
    input.Body.serviceRegistries[_].registryArn == STRING
    input.Body.serviceRegistries[_].port == INTEGER
    input.Body.serviceRegistries[_].containerName == STRING
    input.Body.serviceRegistries[_].containerPort == INTEGER
    input.Body.launchType == enum_LaunchType[_]
    input.Body.capacityProviderStrategy[_].capacityProvider == STRING
    input.Body.capacityProviderStrategy[_].weight == INTEGER
    input.Body.capacityProviderStrategy[_].base == INTEGER
    input.Body.platformVersion == STRING
    input.Body.scale.value == DOUBLE
    input.Body.scale.unit == enum_ScaleUnit[_]
    input.Body.clientToken == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAccountSetting

enum_SettingName := [ "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" ]

valid {
    input.Body.name == enum_SettingName[_]
    input.Body.principalArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAttributes

enum_TargetType := [ "container-instance" ]

valid {
    input.Body.cluster == STRING
    input.Body.attributes[_].name == STRING
    input.Body.attributes[_].value == STRING
    input.Body.attributes[_].targetType == enum_TargetType[_]
    input.Body.attributes[_].targetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteCapacityProvider

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

DeleteCluster

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

DeleteService

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteTaskDefinitions

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

DeleteTaskSet

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.taskSet == STRING
    input.Body.force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeregisterContainerInstance

valid {
    input.Body.cluster == STRING
    input.Body.containerInstance == STRING
    input.Body.force == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeregisterTaskDefinition

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

DescribeCapacityProviders

enum_CapacityProviderField := [ "TAGS" ]

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

DescribeClusters

enum_ClusterField := [ "ATTACHMENTS", "CONFIGURATIONS", "SETTINGS", "STATISTICS", "TAGS" ]

valid {
    input.Body.clusters[_] == STRING
    input.Body.include[_] == enum_ClusterField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeContainerInstances

enum_ContainerInstanceField := [ "TAGS", "CONTAINER_INSTANCE_HEALTH" ]

valid {
    input.Body.cluster == STRING
    input.Body.containerInstances[_] == STRING
    input.Body.include[_] == enum_ContainerInstanceField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeServices

enum_ServiceField := [ "TAGS" ]

valid {
    input.Body.cluster == STRING
    input.Body.services[_] == STRING
    input.Body.include[_] == enum_ServiceField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTaskDefinition

enum_TaskDefinitionField := [ "TAGS" ]

valid {
    input.Body.taskDefinition == STRING
    input.Body.include[_] == enum_TaskDefinitionField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTaskSets

enum_TaskSetField := [ "TAGS" ]

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.taskSets[_] == STRING
    input.Body.include[_] == enum_TaskSetField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeTasks

enum_TaskField := [ "TAGS" ]

valid {
    input.Body.cluster == STRING
    input.Body.tasks[_] == STRING
    input.Body.include[_] == enum_TaskField[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DiscoverPollEndpoint

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

ExecuteCommand

valid {
    input.Body.cluster == STRING
    input.Body.container == STRING
    input.Body.command == STRING
    input.Body.interactive == BOOLEAN
    input.Body.task == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetTaskProtection

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

ListAccountSettings

enum_SettingName := [ "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" ]

valid {
    input.Body.name == enum_SettingName[_]
    input.Body.value == STRING
    input.Body.principalArn == STRING
    input.Body.effectiveSettings == BOOLEAN
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAttributes

enum_TargetType := [ "container-instance" ]

valid {
    input.Body.cluster == STRING
    input.Body.targetType == enum_TargetType[_]
    input.Body.attributeName == STRING
    input.Body.attributeValue == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListClusters

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

ListContainerInstances

enum_ContainerInstanceStatus := [ "ACTIVE", "DRAINING", "REGISTERING", "DEREGISTERING", "REGISTRATION_FAILED" ]

valid {
    input.Body.cluster == STRING
    input.Body.filter == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.status == enum_ContainerInstanceStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListServices

enum_LaunchType := [ "EC2", "FARGATE", "EXTERNAL" ]
enum_SchedulingStrategy := [ "REPLICA", "DAEMON" ]

valid {
    input.Body.cluster == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.launchType == enum_LaunchType[_]
    input.Body.schedulingStrategy == enum_SchedulingStrategy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListServicesByNamespace

valid {
    input.Body.namespace == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    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
}

ListTaskDefinitionFamilies

enum_TaskDefinitionFamilyStatus := [ "ACTIVE", "INACTIVE", "ALL" ]

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

ListTaskDefinitions

enum_SortOrder := [ "ASC", "DESC" ]
enum_TaskDefinitionStatus := [ "ACTIVE", "INACTIVE", "DELETE_IN_PROGRESS" ]

valid {
    input.Body.familyPrefix == STRING
    input.Body.status == enum_TaskDefinitionStatus[_]
    input.Body.sort == enum_SortOrder[_]
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTasks

enum_DesiredStatus := [ "RUNNING", "PENDING", "STOPPED" ]
enum_LaunchType := [ "EC2", "FARGATE", "EXTERNAL" ]

valid {
    input.Body.cluster == STRING
    input.Body.containerInstance == STRING
    input.Body.family == STRING
    input.Body.nextToken == STRING
    input.Body.maxResults == INTEGER
    input.Body.startedBy == STRING
    input.Body.serviceName == STRING
    input.Body.desiredStatus == enum_DesiredStatus[_]
    input.Body.launchType == enum_LaunchType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutAccountSetting

enum_SettingName := [ "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" ]

valid {
    input.Body.name == enum_SettingName[_]
    input.Body.value == STRING
    input.Body.principalArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutAccountSettingDefault

enum_SettingName := [ "serviceLongArnFormat", "taskLongArnFormat", "containerInstanceLongArnFormat", "awsvpcTrunking", "containerInsights", "fargateFIPSMode", "tagResourceAuthorization", "fargateTaskRetirementWaitPeriod", "guardDutyActivate" ]

valid {
    input.Body.name == enum_SettingName[_]
    input.Body.value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutAttributes

enum_TargetType := [ "container-instance" ]

valid {
    input.Body.cluster == STRING
    input.Body.attributes[_].name == STRING
    input.Body.attributes[_].value == STRING
    input.Body.attributes[_].targetType == enum_TargetType[_]
    input.Body.attributes[_].targetId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutClusterCapacityProviders

valid {
    input.Body.cluster == STRING
    input.Body.capacityProviders[_] == STRING
    input.Body.defaultCapacityProviderStrategy[_].capacityProvider == STRING
    input.Body.defaultCapacityProviderStrategy[_].weight == INTEGER
    input.Body.defaultCapacityProviderStrategy[_].base == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RegisterContainerInstance

enum_PlatformDeviceType := [ "GPU" ]
enum_TargetType := [ "container-instance" ]

valid {
    input.Body.cluster == STRING
    input.Body.instanceIdentityDocument == STRING
    input.Body.instanceIdentityDocumentSignature == STRING
    input.Body.totalResources[_].name == STRING
    input.Body.totalResources[_].type == STRING
    input.Body.totalResources[_].doubleValue == DOUBLE
    input.Body.totalResources[_].longValue == LONG
    input.Body.totalResources[_].integerValue == INTEGER
    input.Body.totalResources[_].stringSetValue[_] == STRING
    input.Body.versionInfo.agentVersion == STRING
    input.Body.versionInfo.agentHash == STRING
    input.Body.versionInfo.dockerVersion == STRING
    input.Body.containerInstanceArn == STRING
    input.Body.attributes[_].name == STRING
    input.Body.attributes[_].value == STRING
    input.Body.attributes[_].targetType == enum_TargetType[_]
    input.Body.attributes[_].targetId == STRING
    input.Body.platformDevices[_].id == STRING
    input.Body.platformDevices[_].type == enum_PlatformDeviceType[_]
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RegisterTaskDefinition

enum_ApplicationProtocol := [ "http", "http2", "grpc" ]
enum_CPUArchitecture := [ "X86_64", "ARM64" ]
enum_Compatibility := [ "EC2", "FARGATE", "EXTERNAL" ]
enum_ContainerCondition := [ "START", "COMPLETE", "SUCCESS", "HEALTHY" ]
enum_DeviceCgroupPermission := [ "read", "write", "mknod" ]
enum_EFSAuthorizationConfigIAM := [ "ENABLED", "DISABLED" ]
enum_EFSTransitEncryption := [ "ENABLED", "DISABLED" ]
enum_EnvironmentFileType := [ "s3" ]
enum_FirelensConfigurationType := [ "fluentd", "fluentbit" ]
enum_IpcMode := [ "host", "task", "none" ]
enum_LogDriver := [ "json-file", "syslog", "journald", "gelf", "fluentd", "awslogs", "splunk", "awsfirelens" ]
enum_NetworkMode := [ "bridge", "host", "awsvpc", "none" ]
enum_OSFamily := [ "WINDOWS_SERVER_2019_FULL", "WINDOWS_SERVER_2019_CORE", "WINDOWS_SERVER_2016_FULL", "WINDOWS_SERVER_2004_CORE", "WINDOWS_SERVER_2022_CORE", "WINDOWS_SERVER_2022_FULL", "WINDOWS_SERVER_20H2_CORE", "LINUX" ]
enum_PidMode := [ "host", "task" ]
enum_ProxyConfigurationType := [ "APPMESH" ]
enum_ResourceType := [ "GPU", "InferenceAccelerator" ]
enum_Scope := [ "task", "shared" ]
enum_TaskDefinitionPlacementConstraintType := [ "memberOf" ]
enum_TransportProtocol := [ "tcp", "udp" ]
enum_UlimitName := [ "core", "cpu", "data", "fsize", "locks", "memlock", "msgqueue", "nice", "nofile", "nproc", "rss", "rtprio", "rttime", "sigpending", "stack" ]

valid {
    input.Body.family == STRING
    input.Body.taskRoleArn == STRING
    input.Body.executionRoleArn == STRING
    input.Body.networkMode == enum_NetworkMode[_]
    input.Body.containerDefinitions[_].name == STRING
    input.Body.containerDefinitions[_].image == STRING
    input.Body.containerDefinitions[_].repositoryCredentials.credentialsParameter == STRING
    input.Body.containerDefinitions[_].cpu == INTEGER
    input.Body.containerDefinitions[_].memory == INTEGER
    input.Body.containerDefinitions[_].memoryReservation == INTEGER
    input.Body.containerDefinitions[_].links[_] == STRING
    input.Body.containerDefinitions[_].portMappings[_].containerPort == INTEGER
    input.Body.containerDefinitions[_].portMappings[_].hostPort == INTEGER
    input.Body.containerDefinitions[_].portMappings[_].protocol == enum_TransportProtocol[_]
    input.Body.containerDefinitions[_].portMappings[_].name == STRING
    input.Body.containerDefinitions[_].portMappings[_].appProtocol == enum_ApplicationProtocol[_]
    input.Body.containerDefinitions[_].portMappings[_].containerPortRange == STRING
    input.Body.containerDefinitions[_].essential == BOOLEAN
    input.Body.containerDefinitions[_].entryPoint[_] == STRING
    input.Body.containerDefinitions[_].command[_] == STRING
    input.Body.containerDefinitions[_].environment[_].name == STRING
    input.Body.containerDefinitions[_].environment[_].value == STRING
    input.Body.containerDefinitions[_].environmentFiles[_].value == STRING
    input.Body.containerDefinitions[_].environmentFiles[_].type == enum_EnvironmentFileType[_]
    input.Body.containerDefinitions[_].mountPoints[_].sourceVolume == STRING
    input.Body.containerDefinitions[_].mountPoints[_].containerPath == STRING
    input.Body.containerDefinitions[_].mountPoints[_].readOnly == BOOLEAN
    input.Body.containerDefinitions[_].volumesFrom[_].sourceContainer == STRING
    input.Body.containerDefinitions[_].volumesFrom[_].readOnly == BOOLEAN
    input.Body.containerDefinitions[_].linuxParameters.capabilities.add[_] == STRING
    input.Body.containerDefinitions[_].linuxParameters.capabilities.drop[_] == STRING
    input.Body.containerDefinitions[_].linuxParameters.devices[_].hostPath == STRING
    input.Body.containerDefinitions[_].linuxParameters.devices[_].containerPath == STRING
    input.Body.containerDefinitions[_].linuxParameters.devices[_].permissions[_] == enum_DeviceCgroupPermission[_]
    input.Body.containerDefinitions[_].linuxParameters.initProcessEnabled == BOOLEAN
    input.Body.containerDefinitions[_].linuxParameters.sharedMemorySize == INTEGER
    input.Body.containerDefinitions[_].linuxParameters.tmpfs[_].containerPath == STRING
    input.Body.containerDefinitions[_].linuxParameters.tmpfs[_].size == INTEGER
    input.Body.containerDefinitions[_].linuxParameters.tmpfs[_].mountOptions[_] == STRING
    input.Body.containerDefinitions[_].linuxParameters.maxSwap == INTEGER
    input.Body.containerDefinitions[_].linuxParameters.swappiness == INTEGER
    input.Body.containerDefinitions[_].secrets[_].name == STRING
    input.Body.containerDefinitions[_].secrets[_].valueFrom == STRING
    input.Body.containerDefinitions[_].dependsOn[_].containerName == STRING
    input.Body.containerDefinitions[_].dependsOn[_].condition == enum_ContainerCondition[_]
    input.Body.containerDefinitions[_].startTimeout == INTEGER
    input.Body.containerDefinitions[_].stopTimeout == INTEGER
    input.Body.containerDefinitions[_].hostname == STRING
    input.Body.containerDefinitions[_].user == STRING
    input.Body.containerDefinitions[_].workingDirectory == STRING
    input.Body.containerDefinitions[_].disableNetworking == BOOLEAN
    input.Body.containerDefinitions[_].privileged == BOOLEAN
    input.Body.containerDefinitions[_].readonlyRootFilesystem == BOOLEAN
    input.Body.containerDefinitions[_].dnsServers[_] == STRING
    input.Body.containerDefinitions[_].dnsSearchDomains[_] == STRING
    input.Body.containerDefinitions[_].extraHosts[_].hostname == STRING
    input.Body.containerDefinitions[_].extraHosts[_].ipAddress == STRING
    input.Body.containerDefinitions[_].dockerSecurityOptions[_] == STRING
    input.Body.containerDefinitions[_].interactive == BOOLEAN
    input.Body.containerDefinitions[_].pseudoTerminal == BOOLEAN
    input.Body.containerDefinitions[_].dockerLabels.STRING == STRING
    input.Body.containerDefinitions[_].ulimits[_].name == enum_UlimitName[_]
    input.Body.containerDefinitions[_].ulimits[_].softLimit == INTEGER
    input.Body.containerDefinitions[_].ulimits[_].hardLimit == INTEGER
    input.Body.containerDefinitions[_].logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.containerDefinitions[_].logConfiguration.options.STRING == STRING
    input.Body.containerDefinitions[_].logConfiguration.secretOptions[_].name == STRING
    input.Body.containerDefinitions[_].logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.containerDefinitions[_].healthCheck.command[_] == STRING
    input.Body.containerDefinitions[_].healthCheck.interval == INTEGER
    input.Body.containerDefinitions[_].healthCheck.timeout == INTEGER
    input.Body.containerDefinitions[_].healthCheck.retries == INTEGER
    input.Body.containerDefinitions[_].healthCheck.startPeriod == INTEGER
    input.Body.containerDefinitions[_].systemControls[_].namespace == STRING
    input.Body.containerDefinitions[_].systemControls[_].value == STRING
    input.Body.containerDefinitions[_].resourceRequirements[_].value == STRING
    input.Body.containerDefinitions[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.containerDefinitions[_].firelensConfiguration.type == enum_FirelensConfigurationType[_]
    input.Body.containerDefinitions[_].firelensConfiguration.options.STRING == STRING
    input.Body.containerDefinitions[_].credentialSpecs[_] == STRING
    input.Body.volumes[_].name == STRING
    input.Body.volumes[_].host.sourcePath == STRING
    input.Body.volumes[_].dockerVolumeConfiguration.scope == enum_Scope[_]
    input.Body.volumes[_].dockerVolumeConfiguration.autoprovision == BOOLEAN
    input.Body.volumes[_].dockerVolumeConfiguration.driver == STRING
    input.Body.volumes[_].dockerVolumeConfiguration.driverOpts.STRING == STRING
    input.Body.volumes[_].dockerVolumeConfiguration.labels.STRING == STRING
    input.Body.volumes[_].efsVolumeConfiguration.fileSystemId == STRING
    input.Body.volumes[_].efsVolumeConfiguration.rootDirectory == STRING
    input.Body.volumes[_].efsVolumeConfiguration.transitEncryption == enum_EFSTransitEncryption[_]
    input.Body.volumes[_].efsVolumeConfiguration.transitEncryptionPort == INTEGER
    input.Body.volumes[_].efsVolumeConfiguration.authorizationConfig.accessPointId == STRING
    input.Body.volumes[_].efsVolumeConfiguration.authorizationConfig.iam == enum_EFSAuthorizationConfigIAM[_]
    input.Body.volumes[_].fsxWindowsFileServerVolumeConfiguration.fileSystemId == STRING
    input.Body.volumes[_].fsxWindowsFileServerVolumeConfiguration.rootDirectory == STRING
    input.Body.volumes[_].fsxWindowsFileServerVolumeConfiguration.authorizationConfig.credentialsParameter == STRING
    input.Body.volumes[_].fsxWindowsFileServerVolumeConfiguration.authorizationConfig.domain == STRING
    input.Body.volumes[_].configuredAtLaunch == BOOLEAN
    input.Body.placementConstraints[_].type == enum_TaskDefinitionPlacementConstraintType[_]
    input.Body.placementConstraints[_].expression == STRING
    input.Body.requiresCompatibilities[_] == enum_Compatibility[_]
    input.Body.cpu == STRING
    input.Body.memory == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.pidMode == enum_PidMode[_]
    input.Body.ipcMode == enum_IpcMode[_]
    input.Body.proxyConfiguration.type == enum_ProxyConfigurationType[_]
    input.Body.proxyConfiguration.containerName == STRING
    input.Body.proxyConfiguration.properties[_].name == STRING
    input.Body.proxyConfiguration.properties[_].value == STRING
    input.Body.inferenceAccelerators[_].deviceName == STRING
    input.Body.inferenceAccelerators[_].deviceType == STRING
    input.Body.ephemeralStorage.sizeInGiB == INTEGER
    input.Body.runtimePlatform.cpuArchitecture == enum_CPUArchitecture[_]
    input.Body.runtimePlatform.operatingSystemFamily == enum_OSFamily[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RunTask

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_EBSResourceType := [ "volume" ]
enum_EnvironmentFileType := [ "s3" ]
enum_LaunchType := [ "EC2", "FARGATE", "EXTERNAL" ]
enum_PlacementConstraintType := [ "distinctInstance", "memberOf" ]
enum_PlacementStrategyType := [ "random", "spread", "binpack" ]
enum_PropagateTags := [ "TASK_DEFINITION", "SERVICE", "NONE" ]
enum_ResourceType := [ "GPU", "InferenceAccelerator" ]
enum_TaskFilesystemType := [ "ext3", "ext4", "xfs" ]

valid {
    input.Body.capacityProviderStrategy[_].capacityProvider == STRING
    input.Body.capacityProviderStrategy[_].weight == INTEGER
    input.Body.capacityProviderStrategy[_].base == INTEGER
    input.Body.cluster == STRING
    input.Body.count == INTEGER
    input.Body.enableECSManagedTags == BOOLEAN
    input.Body.enableExecuteCommand == BOOLEAN
    input.Body.group == STRING
    input.Body.launchType == enum_LaunchType[_]
    input.Body.networkConfiguration.awsvpcConfiguration.subnets[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.securityGroups[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.overrides.containerOverrides[_].name == STRING
    input.Body.overrides.containerOverrides[_].command[_] == STRING
    input.Body.overrides.containerOverrides[_].environment[_].name == STRING
    input.Body.overrides.containerOverrides[_].environment[_].value == STRING
    input.Body.overrides.containerOverrides[_].environmentFiles[_].value == STRING
    input.Body.overrides.containerOverrides[_].environmentFiles[_].type == enum_EnvironmentFileType[_]
    input.Body.overrides.containerOverrides[_].cpu == INTEGER
    input.Body.overrides.containerOverrides[_].memory == INTEGER
    input.Body.overrides.containerOverrides[_].memoryReservation == INTEGER
    input.Body.overrides.containerOverrides[_].resourceRequirements[_].value == STRING
    input.Body.overrides.containerOverrides[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.overrides.cpu == STRING
    input.Body.overrides.inferenceAcceleratorOverrides[_].deviceName == STRING
    input.Body.overrides.inferenceAcceleratorOverrides[_].deviceType == STRING
    input.Body.overrides.executionRoleArn == STRING
    input.Body.overrides.memory == STRING
    input.Body.overrides.taskRoleArn == STRING
    input.Body.overrides.ephemeralStorage.sizeInGiB == INTEGER
    input.Body.placementConstraints[_].type == enum_PlacementConstraintType[_]
    input.Body.placementConstraints[_].expression == STRING
    input.Body.placementStrategy[_].type == enum_PlacementStrategyType[_]
    input.Body.placementStrategy[_].field == STRING
    input.Body.platformVersion == STRING
    input.Body.propagateTags == enum_PropagateTags[_]
    input.Body.referenceId == STRING
    input.Body.startedBy == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.taskDefinition == STRING
    input.Body.clientToken == STRING
    input.Body.volumeConfigurations[_].name == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.encrypted == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.kmsKeyId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.volumeType == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.sizeInGiB == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.snapshotId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.iops == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.throughput == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].resourceType == enum_EBSResourceType[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].key == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].value == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].propagateTags == enum_PropagateTags[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.roleArn == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.terminationPolicy.deleteOnTermination == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.filesystemType == enum_TaskFilesystemType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartTask

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_EBSResourceType := [ "volume" ]
enum_EnvironmentFileType := [ "s3" ]
enum_PropagateTags := [ "TASK_DEFINITION", "SERVICE", "NONE" ]
enum_ResourceType := [ "GPU", "InferenceAccelerator" ]
enum_TaskFilesystemType := [ "ext3", "ext4", "xfs" ]

valid {
    input.Body.cluster == STRING
    input.Body.containerInstances[_] == STRING
    input.Body.enableECSManagedTags == BOOLEAN
    input.Body.enableExecuteCommand == BOOLEAN
    input.Body.group == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.subnets[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.securityGroups[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.overrides.containerOverrides[_].name == STRING
    input.Body.overrides.containerOverrides[_].command[_] == STRING
    input.Body.overrides.containerOverrides[_].environment[_].name == STRING
    input.Body.overrides.containerOverrides[_].environment[_].value == STRING
    input.Body.overrides.containerOverrides[_].environmentFiles[_].value == STRING
    input.Body.overrides.containerOverrides[_].environmentFiles[_].type == enum_EnvironmentFileType[_]
    input.Body.overrides.containerOverrides[_].cpu == INTEGER
    input.Body.overrides.containerOverrides[_].memory == INTEGER
    input.Body.overrides.containerOverrides[_].memoryReservation == INTEGER
    input.Body.overrides.containerOverrides[_].resourceRequirements[_].value == STRING
    input.Body.overrides.containerOverrides[_].resourceRequirements[_].type == enum_ResourceType[_]
    input.Body.overrides.cpu == STRING
    input.Body.overrides.inferenceAcceleratorOverrides[_].deviceName == STRING
    input.Body.overrides.inferenceAcceleratorOverrides[_].deviceType == STRING
    input.Body.overrides.executionRoleArn == STRING
    input.Body.overrides.memory == STRING
    input.Body.overrides.taskRoleArn == STRING
    input.Body.overrides.ephemeralStorage.sizeInGiB == INTEGER
    input.Body.propagateTags == enum_PropagateTags[_]
    input.Body.referenceId == STRING
    input.Body.startedBy == STRING
    input.Body.tags[_].key == STRING
    input.Body.tags[_].value == STRING
    input.Body.taskDefinition == STRING
    input.Body.volumeConfigurations[_].name == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.encrypted == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.kmsKeyId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.volumeType == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.sizeInGiB == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.snapshotId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.iops == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.throughput == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].resourceType == enum_EBSResourceType[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].key == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].value == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].propagateTags == enum_PropagateTags[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.roleArn == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.terminationPolicy.deleteOnTermination == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.filesystemType == enum_TaskFilesystemType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopTask

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

SubmitAttachmentStateChanges

valid {
    input.Body.cluster == STRING
    input.Body.attachments[_].attachmentArn == STRING
    input.Body.attachments[_].status == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SubmitContainerStateChange

enum_TransportProtocol := [ "tcp", "udp" ]

valid {
    input.Body.cluster == STRING
    input.Body.task == STRING
    input.Body.containerName == STRING
    input.Body.runtimeId == STRING
    input.Body.status == STRING
    input.Body.exitCode == INTEGER
    input.Body.reason == STRING
    input.Body.networkBindings[_].bindIP == STRING
    input.Body.networkBindings[_].containerPort == INTEGER
    input.Body.networkBindings[_].hostPort == INTEGER
    input.Body.networkBindings[_].protocol == enum_TransportProtocol[_]
    input.Body.networkBindings[_].containerPortRange == STRING
    input.Body.networkBindings[_].hostPortRange == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SubmitTaskStateChange

enum_ManagedAgentName := [ "ExecuteCommandAgent" ]
enum_TransportProtocol := [ "tcp", "udp" ]

valid {
    input.Body.cluster == STRING
    input.Body.task == STRING
    input.Body.status == STRING
    input.Body.reason == STRING
    input.Body.containers[_].containerName == STRING
    input.Body.containers[_].imageDigest == STRING
    input.Body.containers[_].runtimeId == STRING
    input.Body.containers[_].exitCode == INTEGER
    input.Body.containers[_].networkBindings[_].bindIP == STRING
    input.Body.containers[_].networkBindings[_].containerPort == INTEGER
    input.Body.containers[_].networkBindings[_].hostPort == INTEGER
    input.Body.containers[_].networkBindings[_].protocol == enum_TransportProtocol[_]
    input.Body.containers[_].networkBindings[_].containerPortRange == STRING
    input.Body.containers[_].networkBindings[_].hostPortRange == STRING
    input.Body.containers[_].reason == STRING
    input.Body.containers[_].status == STRING
    input.Body.attachments[_].attachmentArn == STRING
    input.Body.attachments[_].status == STRING
    input.Body.managedAgents[_].containerName == STRING
    input.Body.managedAgents[_].managedAgentName == enum_ManagedAgentName[_]
    input.Body.managedAgents[_].status == STRING
    input.Body.managedAgents[_].reason == STRING
    input.Body.pullStartedAt == TIMESTAMP
    input.Body.pullStoppedAt == TIMESTAMP
    input.Body.executionStoppedAt == TIMESTAMP
    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
}

UpdateCapacityProvider

enum_ManagedDraining := [ "ENABLED", "DISABLED" ]
enum_ManagedScalingStatus := [ "ENABLED", "DISABLED" ]
enum_ManagedTerminationProtection := [ "ENABLED", "DISABLED" ]

valid {
    input.Body.name == STRING
    input.Body.autoScalingGroupProvider.managedScaling.status == enum_ManagedScalingStatus[_]
    input.Body.autoScalingGroupProvider.managedScaling.targetCapacity == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.minimumScalingStepSize == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.maximumScalingStepSize == INTEGER
    input.Body.autoScalingGroupProvider.managedScaling.instanceWarmupPeriod == INTEGER
    input.Body.autoScalingGroupProvider.managedTerminationProtection == enum_ManagedTerminationProtection[_]
    input.Body.autoScalingGroupProvider.managedDraining == enum_ManagedDraining[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateCluster

enum_ClusterSettingName := [ "containerInsights" ]
enum_ExecuteCommandLogging := [ "NONE", "DEFAULT", "OVERRIDE" ]

valid {
    input.Body.cluster == STRING
    input.Body.settings[_].name == enum_ClusterSettingName[_]
    input.Body.settings[_].value == STRING
    input.Body.configuration.executeCommandConfiguration.kmsKeyId == STRING
    input.Body.configuration.executeCommandConfiguration.logging == enum_ExecuteCommandLogging[_]
    input.Body.configuration.executeCommandConfiguration.logConfiguration.cloudWatchLogGroupName == STRING
    input.Body.configuration.executeCommandConfiguration.logConfiguration.cloudWatchEncryptionEnabled == BOOLEAN
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3BucketName == STRING
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3EncryptionEnabled == BOOLEAN
    input.Body.configuration.executeCommandConfiguration.logConfiguration.s3KeyPrefix == STRING
    input.Body.serviceConnectDefaults.namespace == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateClusterSettings

enum_ClusterSettingName := [ "containerInsights" ]

valid {
    input.Body.cluster == STRING
    input.Body.settings[_].name == enum_ClusterSettingName[_]
    input.Body.settings[_].value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateContainerAgent

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

UpdateContainerInstancesState

enum_ContainerInstanceStatus := [ "ACTIVE", "DRAINING", "REGISTERING", "DEREGISTERING", "REGISTRATION_FAILED" ]

valid {
    input.Body.cluster == STRING
    input.Body.containerInstances[_] == STRING
    input.Body.status == enum_ContainerInstanceStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateService

enum_AssignPublicIp := [ "ENABLED", "DISABLED" ]
enum_EBSResourceType := [ "volume" ]
enum_LogDriver := [ "json-file", "syslog", "journald", "gelf", "fluentd", "awslogs", "splunk", "awsfirelens" ]
enum_PlacementConstraintType := [ "distinctInstance", "memberOf" ]
enum_PlacementStrategyType := [ "random", "spread", "binpack" ]
enum_PropagateTags := [ "TASK_DEFINITION", "SERVICE", "NONE" ]
enum_TaskFilesystemType := [ "ext3", "ext4", "xfs" ]

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.desiredCount == INTEGER
    input.Body.taskDefinition == STRING
    input.Body.capacityProviderStrategy[_].capacityProvider == STRING
    input.Body.capacityProviderStrategy[_].weight == INTEGER
    input.Body.capacityProviderStrategy[_].base == INTEGER
    input.Body.deploymentConfiguration.deploymentCircuitBreaker.enable == BOOLEAN
    input.Body.deploymentConfiguration.deploymentCircuitBreaker.rollback == BOOLEAN
    input.Body.deploymentConfiguration.maximumPercent == INTEGER
    input.Body.deploymentConfiguration.minimumHealthyPercent == INTEGER
    input.Body.deploymentConfiguration.alarms.alarmNames[_] == STRING
    input.Body.deploymentConfiguration.alarms.enable == BOOLEAN
    input.Body.deploymentConfiguration.alarms.rollback == BOOLEAN
    input.Body.networkConfiguration.awsvpcConfiguration.subnets[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.securityGroups[_] == STRING
    input.Body.networkConfiguration.awsvpcConfiguration.assignPublicIp == enum_AssignPublicIp[_]
    input.Body.placementConstraints[_].type == enum_PlacementConstraintType[_]
    input.Body.placementConstraints[_].expression == STRING
    input.Body.placementStrategy[_].type == enum_PlacementStrategyType[_]
    input.Body.placementStrategy[_].field == STRING
    input.Body.platformVersion == STRING
    input.Body.forceNewDeployment == BOOLEAN
    input.Body.healthCheckGracePeriodSeconds == INTEGER
    input.Body.enableExecuteCommand == BOOLEAN
    input.Body.enableECSManagedTags == BOOLEAN
    input.Body.loadBalancers[_].targetGroupArn == STRING
    input.Body.loadBalancers[_].loadBalancerName == STRING
    input.Body.loadBalancers[_].containerName == STRING
    input.Body.loadBalancers[_].containerPort == INTEGER
    input.Body.propagateTags == enum_PropagateTags[_]
    input.Body.serviceRegistries[_].registryArn == STRING
    input.Body.serviceRegistries[_].port == INTEGER
    input.Body.serviceRegistries[_].containerName == STRING
    input.Body.serviceRegistries[_].containerPort == INTEGER
    input.Body.serviceConnectConfiguration.enabled == BOOLEAN
    input.Body.serviceConnectConfiguration.namespace == STRING
    input.Body.serviceConnectConfiguration.services[_].portName == STRING
    input.Body.serviceConnectConfiguration.services[_].discoveryName == STRING
    input.Body.serviceConnectConfiguration.services[_].clientAliases[_].port == INTEGER
    input.Body.serviceConnectConfiguration.services[_].clientAliases[_].dnsName == STRING
    input.Body.serviceConnectConfiguration.services[_].ingressPortOverride == INTEGER
    input.Body.serviceConnectConfiguration.services[_].timeout.idleTimeoutSeconds == INTEGER
    input.Body.serviceConnectConfiguration.services[_].timeout.perRequestTimeoutSeconds == INTEGER
    input.Body.serviceConnectConfiguration.services[_].tls.issuerCertificateAuthority.awsPcaAuthorityArn == STRING
    input.Body.serviceConnectConfiguration.services[_].tls.kmsKey == STRING
    input.Body.serviceConnectConfiguration.services[_].tls.roleArn == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.logDriver == enum_LogDriver[_]
    input.Body.serviceConnectConfiguration.logConfiguration.options.STRING == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.secretOptions[_].name == STRING
    input.Body.serviceConnectConfiguration.logConfiguration.secretOptions[_].valueFrom == STRING
    input.Body.volumeConfigurations[_].name == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.encrypted == BOOLEAN
    input.Body.volumeConfigurations[_].managedEBSVolume.kmsKeyId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.volumeType == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.sizeInGiB == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.snapshotId == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.iops == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.throughput == INTEGER
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].resourceType == enum_EBSResourceType[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].key == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].tags[_].value == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.tagSpecifications[_].propagateTags == enum_PropagateTags[_]
    input.Body.volumeConfigurations[_].managedEBSVolume.roleArn == STRING
    input.Body.volumeConfigurations[_].managedEBSVolume.filesystemType == enum_TaskFilesystemType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateServicePrimaryTaskSet

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.primaryTaskSet == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTaskProtection

valid {
    input.Body.cluster == STRING
    input.Body.tasks[_] == STRING
    input.Body.protectionEnabled == BOOLEAN
    input.Body.expiresInMinutes == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTaskSet

enum_ScaleUnit := [ "PERCENT" ]

valid {
    input.Body.cluster == STRING
    input.Body.service == STRING
    input.Body.taskSet == STRING
    input.Body.scale.value == DOUBLE
    input.Body.scale.unit == enum_ScaleUnit[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}