AcceptMatch

enum_AcceptanceType := [ "ACCEPT", "REJECT" ]

valid {
    input.Body.TicketId == STRING
    input.Body.PlayerIds[_] == STRING
    input.Body.AcceptanceType == enum_AcceptanceType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ClaimGameServer

enum_FilterInstanceStatus := [ "ACTIVE", "DRAINING" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.GameServerId == STRING
    input.Body.GameServerData == STRING
    input.Body.FilterOption.InstanceStatuses[_] == enum_FilterInstanceStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAlias

enum_RoutingStrategyType := [ "SIMPLE", "TERMINAL" ]

valid {
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.RoutingStrategy.Type == enum_RoutingStrategyType[_]
    input.Body.RoutingStrategy.FleetId == STRING
    input.Body.RoutingStrategy.Message == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateBuild

enum_OperatingSystem := [ "WINDOWS_2012", "AMAZON_LINUX", "AMAZON_LINUX_2", "WINDOWS_2016", "AMAZON_LINUX_2023" ]

valid {
    input.Body.Name == STRING
    input.Body.Version == STRING
    input.Body.StorageLocation.Bucket == STRING
    input.Body.StorageLocation.Key == STRING
    input.Body.StorageLocation.RoleArn == STRING
    input.Body.StorageLocation.ObjectVersion == STRING
    input.Body.OperatingSystem == enum_OperatingSystem[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ServerSdkVersion == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateContainerGroupDefinition

enum_ContainerDependencyCondition := [ "START", "COMPLETE", "SUCCESS", "HEALTHY" ]
enum_ContainerOperatingSystem := [ "AMAZON_LINUX_2023" ]
enum_ContainerSchedulingStrategy := [ "REPLICA", "DAEMON" ]
enum_IpProtocol := [ "TCP", "UDP" ]

valid {
    input.Body.Name == STRING
    input.Body.SchedulingStrategy == enum_ContainerSchedulingStrategy[_]
    input.Body.TotalMemoryLimit == INTEGER
    input.Body.TotalCpuLimit == INTEGER
    input.Body.ContainerDefinitions[_].ContainerName == STRING
    input.Body.ContainerDefinitions[_].ImageUri == STRING
    input.Body.ContainerDefinitions[_].MemoryLimits.SoftLimit == INTEGER
    input.Body.ContainerDefinitions[_].MemoryLimits.HardLimit == INTEGER
    input.Body.ContainerDefinitions[_].PortConfiguration.ContainerPortRanges[_].FromPort == INTEGER
    input.Body.ContainerDefinitions[_].PortConfiguration.ContainerPortRanges[_].ToPort == INTEGER
    input.Body.ContainerDefinitions[_].PortConfiguration.ContainerPortRanges[_].Protocol == enum_IpProtocol[_]
    input.Body.ContainerDefinitions[_].Cpu == INTEGER
    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[_].Command[_] == STRING
    input.Body.ContainerDefinitions[_].Essential == BOOLEAN
    input.Body.ContainerDefinitions[_].EntryPoint[_] == STRING
    input.Body.ContainerDefinitions[_].WorkingDirectory == STRING
    input.Body.ContainerDefinitions[_].Environment[_].Name == STRING
    input.Body.ContainerDefinitions[_].Environment[_].Value == STRING
    input.Body.ContainerDefinitions[_].DependsOn[_].ContainerName == STRING
    input.Body.ContainerDefinitions[_].DependsOn[_].Condition == enum_ContainerDependencyCondition[_]
    input.Body.OperatingSystem == enum_ContainerOperatingSystem[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFleet

enum_CertificateType := [ "DISABLED", "GENERATED" ]
enum_ComputeType := [ "EC2", "ANYWHERE", "CONTAINER" ]
enum_EC2InstanceType := [ "t2.micro", "t2.small", "t2.medium", "t2.large", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "c5.large", "c5.xlarge", "c5.2xlarge", "c5.4xlarge", "c5.9xlarge", "c5.12xlarge", "c5.18xlarge", "c5.24xlarge", "c5a.large", "c5a.xlarge", "c5a.2xlarge", "c5a.4xlarge", "c5a.8xlarge", "c5a.12xlarge", "c5a.16xlarge", "c5a.24xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "r4.large", "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r4.16xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.8xlarge", "r5.12xlarge", "r5.16xlarge", "r5.24xlarge", "r5a.large", "r5a.xlarge", "r5a.2xlarge", "r5a.4xlarge", "r5a.8xlarge", "r5a.12xlarge", "r5a.16xlarge", "r5a.24xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", "m5.12xlarge", "m5.16xlarge", "m5.24xlarge", "m5a.large", "m5a.xlarge", "m5a.2xlarge", "m5a.4xlarge", "m5a.8xlarge", "m5a.12xlarge", "m5a.16xlarge", "m5a.24xlarge", "c5d.large", "c5d.xlarge", "c5d.2xlarge", "c5d.4xlarge", "c5d.9xlarge", "c5d.12xlarge", "c5d.18xlarge", "c5d.24xlarge", "c6a.large", "c6a.xlarge", "c6a.2xlarge", "c6a.4xlarge", "c6a.8xlarge", "c6a.12xlarge", "c6a.16xlarge", "c6a.24xlarge", "c6i.large", "c6i.xlarge", "c6i.2xlarge", "c6i.4xlarge", "c6i.8xlarge", "c6i.12xlarge", "c6i.16xlarge", "c6i.24xlarge", "r5d.large", "r5d.xlarge", "r5d.2xlarge", "r5d.4xlarge", "r5d.8xlarge", "r5d.12xlarge", "r5d.16xlarge", "r5d.24xlarge", "m6g.medium", "m6g.large", "m6g.xlarge", "m6g.2xlarge", "m6g.4xlarge", "m6g.8xlarge", "m6g.12xlarge", "m6g.16xlarge", "c6g.medium", "c6g.large", "c6g.xlarge", "c6g.2xlarge", "c6g.4xlarge", "c6g.8xlarge", "c6g.12xlarge", "c6g.16xlarge", "r6g.medium", "r6g.large", "r6g.xlarge", "r6g.2xlarge", "r6g.4xlarge", "r6g.8xlarge", "r6g.12xlarge", "r6g.16xlarge", "c6gn.medium", "c6gn.large", "c6gn.xlarge", "c6gn.2xlarge", "c6gn.4xlarge", "c6gn.8xlarge", "c6gn.12xlarge", "c6gn.16xlarge", "c7g.medium", "c7g.large", "c7g.xlarge", "c7g.2xlarge", "c7g.4xlarge", "c7g.8xlarge", "c7g.12xlarge", "c7g.16xlarge", "r7g.medium", "r7g.large", "r7g.xlarge", "r7g.2xlarge", "r7g.4xlarge", "r7g.8xlarge", "r7g.12xlarge", "r7g.16xlarge", "m7g.medium", "m7g.large", "m7g.xlarge", "m7g.2xlarge", "m7g.4xlarge", "m7g.8xlarge", "m7g.12xlarge", "m7g.16xlarge", "g5g.xlarge", "g5g.2xlarge", "g5g.4xlarge", "g5g.8xlarge", "g5g.16xlarge" ]
enum_FleetType := [ "ON_DEMAND", "SPOT" ]
enum_InstanceRoleCredentialsProvider := [ "SHARED_CREDENTIAL_FILE" ]
enum_IpProtocol := [ "TCP", "UDP" ]
enum_ProtectionPolicy := [ "NoProtection", "FullProtection" ]

valid {
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.BuildId == STRING
    input.Body.ScriptId == STRING
    input.Body.ServerLaunchPath == STRING
    input.Body.ServerLaunchParameters == STRING
    input.Body.LogPaths[_] == STRING
    input.Body.EC2InstanceType == enum_EC2InstanceType[_]
    input.Body.EC2InboundPermissions[_].FromPort == INTEGER
    input.Body.EC2InboundPermissions[_].ToPort == INTEGER
    input.Body.EC2InboundPermissions[_].IpRange == STRING
    input.Body.EC2InboundPermissions[_].Protocol == enum_IpProtocol[_]
    input.Body.NewGameSessionProtectionPolicy == enum_ProtectionPolicy[_]
    input.Body.RuntimeConfiguration.ServerProcesses[_].LaunchPath == STRING
    input.Body.RuntimeConfiguration.ServerProcesses[_].Parameters == STRING
    input.Body.RuntimeConfiguration.ServerProcesses[_].ConcurrentExecutions == INTEGER
    input.Body.RuntimeConfiguration.MaxConcurrentGameSessionActivations == INTEGER
    input.Body.RuntimeConfiguration.GameSessionActivationTimeoutSeconds == INTEGER
    input.Body.ResourceCreationLimitPolicy.NewGameSessionsPerCreator == INTEGER
    input.Body.ResourceCreationLimitPolicy.PolicyPeriodInMinutes == INTEGER
    input.Body.MetricGroups[_] == STRING
    input.Body.PeerVpcAwsAccountId == STRING
    input.Body.PeerVpcId == STRING
    input.Body.FleetType == enum_FleetType[_]
    input.Body.InstanceRoleArn == STRING
    input.Body.CertificateConfiguration.CertificateType == enum_CertificateType[_]
    input.Body.Locations[_].Location == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.Body.ComputeType == enum_ComputeType[_]
    input.Body.AnywhereConfiguration.Cost == STRING
    input.Body.InstanceRoleCredentialsProvider == enum_InstanceRoleCredentialsProvider[_]
    input.Body.ContainerGroupsConfiguration.ContainerGroupDefinitionNames[_] == STRING
    input.Body.ContainerGroupsConfiguration.ConnectionPortRange.FromPort == INTEGER
    input.Body.ContainerGroupsConfiguration.ConnectionPortRange.ToPort == INTEGER
    input.Body.ContainerGroupsConfiguration.DesiredReplicaContainerGroupsPerInstance == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateFleetLocations

valid {
    input.Body.FleetId == STRING
    input.Body.Locations[_].Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateGameServerGroup

enum_BalancingStrategy := [ "SPOT_ONLY", "SPOT_PREFERRED", "ON_DEMAND_ONLY" ]
enum_GameServerGroupInstanceType := [ "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "c5.large", "c5.xlarge", "c5.2xlarge", "c5.4xlarge", "c5.9xlarge", "c5.12xlarge", "c5.18xlarge", "c5.24xlarge", "c5a.large", "c5a.xlarge", "c5a.2xlarge", "c5a.4xlarge", "c5a.8xlarge", "c5a.12xlarge", "c5a.16xlarge", "c5a.24xlarge", "c6g.medium", "c6g.large", "c6g.xlarge", "c6g.2xlarge", "c6g.4xlarge", "c6g.8xlarge", "c6g.12xlarge", "c6g.16xlarge", "r4.large", "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r4.16xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.8xlarge", "r5.12xlarge", "r5.16xlarge", "r5.24xlarge", "r5a.large", "r5a.xlarge", "r5a.2xlarge", "r5a.4xlarge", "r5a.8xlarge", "r5a.12xlarge", "r5a.16xlarge", "r5a.24xlarge", "r6g.medium", "r6g.large", "r6g.xlarge", "r6g.2xlarge", "r6g.4xlarge", "r6g.8xlarge", "r6g.12xlarge", "r6g.16xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", "m5.12xlarge", "m5.16xlarge", "m5.24xlarge", "m5a.large", "m5a.xlarge", "m5a.2xlarge", "m5a.4xlarge", "m5a.8xlarge", "m5a.12xlarge", "m5a.16xlarge", "m5a.24xlarge", "m6g.medium", "m6g.large", "m6g.xlarge", "m6g.2xlarge", "m6g.4xlarge", "m6g.8xlarge", "m6g.12xlarge", "m6g.16xlarge" ]
enum_GameServerProtectionPolicy := [ "NO_PROTECTION", "FULL_PROTECTION" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.RoleArn == STRING
    input.Body.MinSize == INTEGER
    input.Body.MaxSize == INTEGER
    input.Body.LaunchTemplate.LaunchTemplateId == STRING
    input.Body.LaunchTemplate.LaunchTemplateName == STRING
    input.Body.LaunchTemplate.Version == STRING
    input.Body.InstanceDefinitions[_].InstanceType == enum_GameServerGroupInstanceType[_]
    input.Body.InstanceDefinitions[_].WeightedCapacity == STRING
    input.Body.AutoScalingPolicy.EstimatedInstanceWarmup == INTEGER
    input.Body.AutoScalingPolicy.TargetTrackingConfiguration.TargetValue == DOUBLE
    input.Body.BalancingStrategy == enum_BalancingStrategy[_]
    input.Body.GameServerProtectionPolicy == enum_GameServerProtectionPolicy[_]
    input.Body.VpcSubnets[_] == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateGameSession

valid {
    input.Body.FleetId == STRING
    input.Body.AliasId == STRING
    input.Body.MaximumPlayerSessionCount == INTEGER
    input.Body.Name == STRING
    input.Body.GameProperties[_].Key == STRING
    input.Body.GameProperties[_].Value == STRING
    input.Body.CreatorId == STRING
    input.Body.GameSessionId == STRING
    input.Body.IdempotencyToken == STRING
    input.Body.GameSessionData == STRING
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateGameSessionQueue

enum_PriorityType := [ "LATENCY", "COST", "DESTINATION", "LOCATION" ]

valid {
    input.Body.Name == STRING
    input.Body.TimeoutInSeconds == INTEGER
    input.Body.PlayerLatencyPolicies[_].MaximumIndividualPlayerLatencyMilliseconds == INTEGER
    input.Body.PlayerLatencyPolicies[_].PolicyDurationSeconds == INTEGER
    input.Body.Destinations[_].DestinationArn == STRING
    input.Body.FilterConfiguration.AllowedLocations[_] == STRING
    input.Body.PriorityConfiguration.PriorityOrder[_] == enum_PriorityType[_]
    input.Body.PriorityConfiguration.LocationOrder[_] == STRING
    input.Body.CustomEventData == STRING
    input.Body.NotificationTarget == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateLocation

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

CreateMatchmakingConfiguration

enum_BackfillMode := [ "AUTOMATIC", "MANUAL" ]
enum_FlexMatchMode := [ "STANDALONE", "WITH_QUEUE" ]

valid {
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.GameSessionQueueArns[_] == STRING
    input.Body.RequestTimeoutSeconds == INTEGER
    input.Body.AcceptanceTimeoutSeconds == INTEGER
    input.Body.AcceptanceRequired == BOOLEAN
    input.Body.RuleSetName == STRING
    input.Body.NotificationTarget == STRING
    input.Body.AdditionalPlayerCount == INTEGER
    input.Body.CustomEventData == STRING
    input.Body.GameProperties[_].Key == STRING
    input.Body.GameProperties[_].Value == STRING
    input.Body.GameSessionData == STRING
    input.Body.BackfillMode == enum_BackfillMode[_]
    input.Body.FlexMatchMode == enum_FlexMatchMode[_]
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateMatchmakingRuleSet

valid {
    input.Body.Name == STRING
    input.Body.RuleSetBody == STRING
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePlayerSession

valid {
    input.Body.GameSessionId == STRING
    input.Body.PlayerId == STRING
    input.Body.PlayerData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePlayerSessions

valid {
    input.Body.GameSessionId == STRING
    input.Body.PlayerIds[_] == STRING
    input.Body.PlayerDataMap.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateScript

valid {
    input.Body.Name == STRING
    input.Body.Version == STRING
    input.Body.StorageLocation.Bucket == STRING
    input.Body.StorageLocation.Key == STRING
    input.Body.StorageLocation.RoleArn == STRING
    input.Body.StorageLocation.ObjectVersion == STRING
    input.Body.ZipFile == BLOB
    input.Body.Tags[_].Key == STRING
    input.Body.Tags[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateVpcPeeringAuthorization

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

CreateVpcPeeringConnection

valid {
    input.Body.FleetId == STRING
    input.Body.PeerVpcAwsAccountId == STRING
    input.Body.PeerVpcId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAlias

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

DeleteBuild

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

DeleteContainerGroupDefinition

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

DeleteFleet

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

DeleteFleetLocations

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

DeleteGameServerGroup

enum_GameServerGroupDeleteOption := [ "SAFE_DELETE", "FORCE_DELETE", "RETAIN" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.DeleteOption == enum_GameServerGroupDeleteOption[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteGameSessionQueue

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

DeleteLocation

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

DeleteMatchmakingConfiguration

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

DeleteMatchmakingRuleSet

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

DeleteScalingPolicy

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

DeleteScript

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

DeleteVpcPeeringAuthorization

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

DeleteVpcPeeringConnection

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

DeregisterCompute

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

DeregisterGameServer

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

DescribeAlias

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

DescribeBuild

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

DescribeCompute

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

DescribeContainerGroupDefinition

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

DescribeEC2InstanceLimits

enum_EC2InstanceType := [ "t2.micro", "t2.small", "t2.medium", "t2.large", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "c5.large", "c5.xlarge", "c5.2xlarge", "c5.4xlarge", "c5.9xlarge", "c5.12xlarge", "c5.18xlarge", "c5.24xlarge", "c5a.large", "c5a.xlarge", "c5a.2xlarge", "c5a.4xlarge", "c5a.8xlarge", "c5a.12xlarge", "c5a.16xlarge", "c5a.24xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "r4.large", "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r4.16xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.8xlarge", "r5.12xlarge", "r5.16xlarge", "r5.24xlarge", "r5a.large", "r5a.xlarge", "r5a.2xlarge", "r5a.4xlarge", "r5a.8xlarge", "r5a.12xlarge", "r5a.16xlarge", "r5a.24xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", "m5.12xlarge", "m5.16xlarge", "m5.24xlarge", "m5a.large", "m5a.xlarge", "m5a.2xlarge", "m5a.4xlarge", "m5a.8xlarge", "m5a.12xlarge", "m5a.16xlarge", "m5a.24xlarge", "c5d.large", "c5d.xlarge", "c5d.2xlarge", "c5d.4xlarge", "c5d.9xlarge", "c5d.12xlarge", "c5d.18xlarge", "c5d.24xlarge", "c6a.large", "c6a.xlarge", "c6a.2xlarge", "c6a.4xlarge", "c6a.8xlarge", "c6a.12xlarge", "c6a.16xlarge", "c6a.24xlarge", "c6i.large", "c6i.xlarge", "c6i.2xlarge", "c6i.4xlarge", "c6i.8xlarge", "c6i.12xlarge", "c6i.16xlarge", "c6i.24xlarge", "r5d.large", "r5d.xlarge", "r5d.2xlarge", "r5d.4xlarge", "r5d.8xlarge", "r5d.12xlarge", "r5d.16xlarge", "r5d.24xlarge", "m6g.medium", "m6g.large", "m6g.xlarge", "m6g.2xlarge", "m6g.4xlarge", "m6g.8xlarge", "m6g.12xlarge", "m6g.16xlarge", "c6g.medium", "c6g.large", "c6g.xlarge", "c6g.2xlarge", "c6g.4xlarge", "c6g.8xlarge", "c6g.12xlarge", "c6g.16xlarge", "r6g.medium", "r6g.large", "r6g.xlarge", "r6g.2xlarge", "r6g.4xlarge", "r6g.8xlarge", "r6g.12xlarge", "r6g.16xlarge", "c6gn.medium", "c6gn.large", "c6gn.xlarge", "c6gn.2xlarge", "c6gn.4xlarge", "c6gn.8xlarge", "c6gn.12xlarge", "c6gn.16xlarge", "c7g.medium", "c7g.large", "c7g.xlarge", "c7g.2xlarge", "c7g.4xlarge", "c7g.8xlarge", "c7g.12xlarge", "c7g.16xlarge", "r7g.medium", "r7g.large", "r7g.xlarge", "r7g.2xlarge", "r7g.4xlarge", "r7g.8xlarge", "r7g.12xlarge", "r7g.16xlarge", "m7g.medium", "m7g.large", "m7g.xlarge", "m7g.2xlarge", "m7g.4xlarge", "m7g.8xlarge", "m7g.12xlarge", "m7g.16xlarge", "g5g.xlarge", "g5g.2xlarge", "g5g.4xlarge", "g5g.8xlarge", "g5g.16xlarge" ]

valid {
    input.Body.EC2InstanceType == enum_EC2InstanceType[_]
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeFleetAttributes

valid {
    input.Body.FleetIds[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeFleetCapacity

valid {
    input.Body.FleetIds[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeFleetEvents

valid {
    input.Body.FleetId == STRING
    input.Body.StartTime == TIMESTAMP
    input.Body.EndTime == TIMESTAMP
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeFleetLocationAttributes

valid {
    input.Body.FleetId == STRING
    input.Body.Locations[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeFleetLocationCapacity

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

DescribeFleetLocationUtilization

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

DescribeFleetPortSettings

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

DescribeFleetUtilization

valid {
    input.Body.FleetIds[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeGameServer

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

DescribeGameServerGroup

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

DescribeGameServerInstances

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.InstanceIds[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeGameSessionDetails

valid {
    input.Body.FleetId == STRING
    input.Body.GameSessionId == STRING
    input.Body.AliasId == STRING
    input.Body.Location == STRING
    input.Body.StatusFilter == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeGameSessionPlacement

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

DescribeGameSessionQueues

valid {
    input.Body.Names[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeGameSessions

valid {
    input.Body.FleetId == STRING
    input.Body.GameSessionId == STRING
    input.Body.AliasId == STRING
    input.Body.Location == STRING
    input.Body.StatusFilter == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeInstances

valid {
    input.Body.FleetId == STRING
    input.Body.InstanceId == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeMatchmaking

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

DescribeMatchmakingConfigurations

valid {
    input.Body.Names[_] == STRING
    input.Body.RuleSetName == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeMatchmakingRuleSets

valid {
    input.Body.Names[_] == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribePlayerSessions

valid {
    input.Body.GameSessionId == STRING
    input.Body.PlayerId == STRING
    input.Body.PlayerSessionId == STRING
    input.Body.PlayerSessionStatusFilter == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeRuntimeConfiguration

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

DescribeScalingPolicies

enum_ScalingStatusType := [ "ACTIVE", "UPDATE_REQUESTED", "UPDATING", "DELETE_REQUESTED", "DELETING", "DELETED", "ERROR" ]

valid {
    input.Body.FleetId == STRING
    input.Body.StatusFilter == enum_ScalingStatusType[_]
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DescribeScript

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

DescribeVpcPeeringAuthorizations

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

DescribeVpcPeeringConnections

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

GetComputeAccess

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

GetComputeAuthToken

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

GetGameSessionLogUrl

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

GetInstanceAccess

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

ListAliases

enum_RoutingStrategyType := [ "SIMPLE", "TERMINAL" ]

valid {
    input.Body.RoutingStrategyType == enum_RoutingStrategyType[_]
    input.Body.Name == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListBuilds

enum_BuildStatus := [ "INITIALIZED", "READY", "FAILED" ]

valid {
    input.Body.Status == enum_BuildStatus[_]
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCompute

valid {
    input.Body.FleetId == STRING
    input.Body.Location == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListContainerGroupDefinitions

enum_ContainerSchedulingStrategy := [ "REPLICA", "DAEMON" ]

valid {
    input.Body.SchedulingStrategy == enum_ContainerSchedulingStrategy[_]
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListFleets

valid {
    input.Body.BuildId == STRING
    input.Body.ScriptId == STRING
    input.Body.ContainerGroupDefinitionName == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGameServerGroups

valid {
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListGameServers

enum_SortOrder := [ "ASCENDING", "DESCENDING" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.SortOrder == enum_SortOrder[_]
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListLocations

enum_LocationFilter := [ "AWS", "CUSTOM" ]

valid {
    input.Body.Filters[_] == enum_LocationFilter[_]
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListScripts

valid {
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListTagsForResource

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

PutScalingPolicy

enum_ComparisonOperatorType := [ "GreaterThanOrEqualToThreshold", "GreaterThanThreshold", "LessThanThreshold", "LessThanOrEqualToThreshold" ]
enum_MetricName := [ "ActivatingGameSessions", "ActiveGameSessions", "ActiveInstances", "AvailableGameSessions", "AvailablePlayerSessions", "CurrentPlayerSessions", "IdleInstances", "PercentAvailableGameSessions", "PercentIdleInstances", "QueueDepth", "WaitTime", "ConcurrentActivatableGameSessions" ]
enum_PolicyType := [ "RuleBased", "TargetBased" ]
enum_ScalingAdjustmentType := [ "ChangeInCapacity", "ExactCapacity", "PercentChangeInCapacity" ]

valid {
    input.Body.Name == STRING
    input.Body.FleetId == STRING
    input.Body.ScalingAdjustment == INTEGER
    input.Body.ScalingAdjustmentType == enum_ScalingAdjustmentType[_]
    input.Body.Threshold == DOUBLE
    input.Body.ComparisonOperator == enum_ComparisonOperatorType[_]
    input.Body.EvaluationPeriods == INTEGER
    input.Body.MetricName == enum_MetricName[_]
    input.Body.PolicyType == enum_PolicyType[_]
    input.Body.TargetConfiguration.TargetValue == DOUBLE
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RegisterCompute

valid {
    input.Body.FleetId == STRING
    input.Body.ComputeName == STRING
    input.Body.CertificatePath == STRING
    input.Body.DnsName == STRING
    input.Body.IpAddress == STRING
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RegisterGameServer

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.GameServerId == STRING
    input.Body.InstanceId == STRING
    input.Body.ConnectionInfo == STRING
    input.Body.GameServerData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

RequestUploadCredentials

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

ResolveAlias

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

ResumeGameServerGroup

enum_GameServerGroupAction := [ "REPLACE_INSTANCE_TYPES" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.ResumeActions[_] == enum_GameServerGroupAction[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

SearchGameSessions

valid {
    input.Body.FleetId == STRING
    input.Body.AliasId == STRING
    input.Body.Location == STRING
    input.Body.FilterExpression == STRING
    input.Body.SortExpression == STRING
    input.Body.Limit == INTEGER
    input.Body.NextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartFleetActions

enum_FleetAction := [ "AUTO_SCALING" ]

valid {
    input.Body.FleetId == STRING
    input.Body.Actions[_] == enum_FleetAction[_]
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartGameSessionPlacement

valid {
    input.Body.PlacementId == STRING
    input.Body.GameSessionQueueName == STRING
    input.Body.GameProperties[_].Key == STRING
    input.Body.GameProperties[_].Value == STRING
    input.Body.MaximumPlayerSessionCount == INTEGER
    input.Body.GameSessionName == STRING
    input.Body.PlayerLatencies[_].PlayerId == STRING
    input.Body.PlayerLatencies[_].RegionIdentifier == STRING
    input.Body.PlayerLatencies[_].LatencyInMilliseconds == FLOAT
    input.Body.DesiredPlayerSessions[_].PlayerId == STRING
    input.Body.DesiredPlayerSessions[_].PlayerData == STRING
    input.Body.GameSessionData == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartMatchBackfill

valid {
    input.Body.TicketId == STRING
    input.Body.ConfigurationName == STRING
    input.Body.GameSessionArn == STRING
    input.Body.Players[_].PlayerId == STRING
    input.Body.Players[_].PlayerAttributes.STRING.S == STRING
    input.Body.Players[_].PlayerAttributes.STRING.N == DOUBLE
    input.Body.Players[_].PlayerAttributes.STRING.SL[_] == STRING
    input.Body.Players[_].PlayerAttributes.STRING.SDM.STRING == DOUBLE
    input.Body.Players[_].Team == STRING
    input.Body.Players[_].LatencyInMs.STRING == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartMatchmaking

valid {
    input.Body.TicketId == STRING
    input.Body.ConfigurationName == STRING
    input.Body.Players[_].PlayerId == STRING
    input.Body.Players[_].PlayerAttributes.STRING.S == STRING
    input.Body.Players[_].PlayerAttributes.STRING.N == DOUBLE
    input.Body.Players[_].PlayerAttributes.STRING.SL[_] == STRING
    input.Body.Players[_].PlayerAttributes.STRING.SDM.STRING == DOUBLE
    input.Body.Players[_].Team == STRING
    input.Body.Players[_].LatencyInMs.STRING == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopFleetActions

enum_FleetAction := [ "AUTO_SCALING" ]

valid {
    input.Body.FleetId == STRING
    input.Body.Actions[_] == enum_FleetAction[_]
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopGameSessionPlacement

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

StopMatchmaking

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

SuspendGameServerGroup

enum_GameServerGroupAction := [ "REPLACE_INSTANCE_TYPES" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.SuspendActions[_] == enum_GameServerGroupAction[_]
    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
}

UpdateAlias

enum_RoutingStrategyType := [ "SIMPLE", "TERMINAL" ]

valid {
    input.Body.AliasId == STRING
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.RoutingStrategy.Type == enum_RoutingStrategyType[_]
    input.Body.RoutingStrategy.FleetId == STRING
    input.Body.RoutingStrategy.Message == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateBuild

valid {
    input.Body.BuildId == STRING
    input.Body.Name == STRING
    input.Body.Version == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFleetAttributes

enum_ProtectionPolicy := [ "NoProtection", "FullProtection" ]

valid {
    input.Body.FleetId == STRING
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.NewGameSessionProtectionPolicy == enum_ProtectionPolicy[_]
    input.Body.ResourceCreationLimitPolicy.NewGameSessionsPerCreator == INTEGER
    input.Body.ResourceCreationLimitPolicy.PolicyPeriodInMinutes == INTEGER
    input.Body.MetricGroups[_] == STRING
    input.Body.AnywhereConfiguration.Cost == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFleetCapacity

valid {
    input.Body.FleetId == STRING
    input.Body.DesiredInstances == INTEGER
    input.Body.MinSize == INTEGER
    input.Body.MaxSize == INTEGER
    input.Body.Location == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateFleetPortSettings

enum_IpProtocol := [ "TCP", "UDP" ]

valid {
    input.Body.FleetId == STRING
    input.Body.InboundPermissionAuthorizations[_].FromPort == INTEGER
    input.Body.InboundPermissionAuthorizations[_].ToPort == INTEGER
    input.Body.InboundPermissionAuthorizations[_].IpRange == STRING
    input.Body.InboundPermissionAuthorizations[_].Protocol == enum_IpProtocol[_]
    input.Body.InboundPermissionRevocations[_].FromPort == INTEGER
    input.Body.InboundPermissionRevocations[_].ToPort == INTEGER
    input.Body.InboundPermissionRevocations[_].IpRange == STRING
    input.Body.InboundPermissionRevocations[_].Protocol == enum_IpProtocol[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGameServer

enum_GameServerHealthCheck := [ "HEALTHY" ]
enum_GameServerUtilizationStatus := [ "AVAILABLE", "UTILIZED" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.GameServerId == STRING
    input.Body.GameServerData == STRING
    input.Body.UtilizationStatus == enum_GameServerUtilizationStatus[_]
    input.Body.HealthCheck == enum_GameServerHealthCheck[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGameServerGroup

enum_BalancingStrategy := [ "SPOT_ONLY", "SPOT_PREFERRED", "ON_DEMAND_ONLY" ]
enum_GameServerGroupInstanceType := [ "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "c5.large", "c5.xlarge", "c5.2xlarge", "c5.4xlarge", "c5.9xlarge", "c5.12xlarge", "c5.18xlarge", "c5.24xlarge", "c5a.large", "c5a.xlarge", "c5a.2xlarge", "c5a.4xlarge", "c5a.8xlarge", "c5a.12xlarge", "c5a.16xlarge", "c5a.24xlarge", "c6g.medium", "c6g.large", "c6g.xlarge", "c6g.2xlarge", "c6g.4xlarge", "c6g.8xlarge", "c6g.12xlarge", "c6g.16xlarge", "r4.large", "r4.xlarge", "r4.2xlarge", "r4.4xlarge", "r4.8xlarge", "r4.16xlarge", "r5.large", "r5.xlarge", "r5.2xlarge", "r5.4xlarge", "r5.8xlarge", "r5.12xlarge", "r5.16xlarge", "r5.24xlarge", "r5a.large", "r5a.xlarge", "r5a.2xlarge", "r5a.4xlarge", "r5a.8xlarge", "r5a.12xlarge", "r5a.16xlarge", "r5a.24xlarge", "r6g.medium", "r6g.large", "r6g.xlarge", "r6g.2xlarge", "r6g.4xlarge", "r6g.8xlarge", "r6g.12xlarge", "r6g.16xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "m5.large", "m5.xlarge", "m5.2xlarge", "m5.4xlarge", "m5.8xlarge", "m5.12xlarge", "m5.16xlarge", "m5.24xlarge", "m5a.large", "m5a.xlarge", "m5a.2xlarge", "m5a.4xlarge", "m5a.8xlarge", "m5a.12xlarge", "m5a.16xlarge", "m5a.24xlarge", "m6g.medium", "m6g.large", "m6g.xlarge", "m6g.2xlarge", "m6g.4xlarge", "m6g.8xlarge", "m6g.12xlarge", "m6g.16xlarge" ]
enum_GameServerProtectionPolicy := [ "NO_PROTECTION", "FULL_PROTECTION" ]

valid {
    input.Body.GameServerGroupName == STRING
    input.Body.RoleArn == STRING
    input.Body.InstanceDefinitions[_].InstanceType == enum_GameServerGroupInstanceType[_]
    input.Body.InstanceDefinitions[_].WeightedCapacity == STRING
    input.Body.GameServerProtectionPolicy == enum_GameServerProtectionPolicy[_]
    input.Body.BalancingStrategy == enum_BalancingStrategy[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGameSession

enum_PlayerSessionCreationPolicy := [ "ACCEPT_ALL", "DENY_ALL" ]
enum_ProtectionPolicy := [ "NoProtection", "FullProtection" ]

valid {
    input.Body.GameSessionId == STRING
    input.Body.MaximumPlayerSessionCount == INTEGER
    input.Body.Name == STRING
    input.Body.PlayerSessionCreationPolicy == enum_PlayerSessionCreationPolicy[_]
    input.Body.ProtectionPolicy == enum_ProtectionPolicy[_]
    input.Body.GameProperties[_].Key == STRING
    input.Body.GameProperties[_].Value == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateGameSessionQueue

enum_PriorityType := [ "LATENCY", "COST", "DESTINATION", "LOCATION" ]

valid {
    input.Body.Name == STRING
    input.Body.TimeoutInSeconds == INTEGER
    input.Body.PlayerLatencyPolicies[_].MaximumIndividualPlayerLatencyMilliseconds == INTEGER
    input.Body.PlayerLatencyPolicies[_].PolicyDurationSeconds == INTEGER
    input.Body.Destinations[_].DestinationArn == STRING
    input.Body.FilterConfiguration.AllowedLocations[_] == STRING
    input.Body.PriorityConfiguration.PriorityOrder[_] == enum_PriorityType[_]
    input.Body.PriorityConfiguration.LocationOrder[_] == STRING
    input.Body.CustomEventData == STRING
    input.Body.NotificationTarget == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateMatchmakingConfiguration

enum_BackfillMode := [ "AUTOMATIC", "MANUAL" ]
enum_FlexMatchMode := [ "STANDALONE", "WITH_QUEUE" ]

valid {
    input.Body.Name == STRING
    input.Body.Description == STRING
    input.Body.GameSessionQueueArns[_] == STRING
    input.Body.RequestTimeoutSeconds == INTEGER
    input.Body.AcceptanceTimeoutSeconds == INTEGER
    input.Body.AcceptanceRequired == BOOLEAN
    input.Body.RuleSetName == STRING
    input.Body.NotificationTarget == STRING
    input.Body.AdditionalPlayerCount == INTEGER
    input.Body.CustomEventData == STRING
    input.Body.GameProperties[_].Key == STRING
    input.Body.GameProperties[_].Value == STRING
    input.Body.GameSessionData == STRING
    input.Body.BackfillMode == enum_BackfillMode[_]
    input.Body.FlexMatchMode == enum_FlexMatchMode[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateRuntimeConfiguration

valid {
    input.Body.FleetId == STRING
    input.Body.RuntimeConfiguration.ServerProcesses[_].LaunchPath == STRING
    input.Body.RuntimeConfiguration.ServerProcesses[_].Parameters == STRING
    input.Body.RuntimeConfiguration.ServerProcesses[_].ConcurrentExecutions == INTEGER
    input.Body.RuntimeConfiguration.MaxConcurrentGameSessionActivations == INTEGER
    input.Body.RuntimeConfiguration.GameSessionActivationTimeoutSeconds == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateScript

valid {
    input.Body.ScriptId == STRING
    input.Body.Name == STRING
    input.Body.Version == STRING
    input.Body.StorageLocation.Bucket == STRING
    input.Body.StorageLocation.Key == STRING
    input.Body.StorageLocation.RoleArn == STRING
    input.Body.StorageLocation.ObjectVersion == STRING
    input.Body.ZipFile == BLOB
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ValidateMatchmakingRuleSet

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