CreateExperimentTemplate

enum_AccountTargeting := [ "single-account", "multi-account" ]
enum_EmptyTargetResolutionMode := [ "fail", "skip" ]

valid {
    input.Body.clientToken == STRING
    input.Body.description == STRING
    input.Body.stopConditions[_].source == STRING
    input.Body.stopConditions[_].value == STRING
    input.Body.targets.STRING.resourceType == STRING
    input.Body.targets.STRING.resourceArns[_] == STRING
    input.Body.targets.STRING.resourceTags.STRING == STRING
    input.Body.targets.STRING.filters[_].path == STRING
    input.Body.targets.STRING.filters[_].values[_] == STRING
    input.Body.targets.STRING.selectionMode == STRING
    input.Body.targets.STRING.parameters.STRING == STRING
    input.Body.actions.STRING.actionId == STRING
    input.Body.actions.STRING.description == STRING
    input.Body.actions.STRING.parameters.STRING == STRING
    input.Body.actions.STRING.targets.STRING == STRING
    input.Body.actions.STRING.startAfter[_] == STRING
    input.Body.roleArn == STRING
    input.Body.tags.STRING == STRING
    input.Body.logConfiguration.cloudWatchLogsConfiguration.logGroupArn == STRING
    input.Body.logConfiguration.s3Configuration.bucketName == STRING
    input.Body.logConfiguration.s3Configuration.prefix == STRING
    input.Body.logConfiguration.logSchemaVersion == INTEGER
    input.Body.experimentOptions.accountTargeting == enum_AccountTargeting[_]
    input.Body.experimentOptions.emptyTargetResolutionMode == enum_EmptyTargetResolutionMode[_]
    input.Body.experimentReportConfiguration.outputs.s3Configuration.bucketName == STRING
    input.Body.experimentReportConfiguration.outputs.s3Configuration.prefix == STRING
    input.Body.experimentReportConfiguration.dataSources.cloudWatchDashboards[_].dashboardIdentifier == STRING
    input.Body.experimentReportConfiguration.preExperimentDuration == STRING
    input.Body.experimentReportConfiguration.postExperimentDuration == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTargetAccountConfiguration

valid {
    input.Body.clientToken == STRING
    input.Body.roleArn == STRING
    input.Body.description == STRING
    input.ReqMap.id == STRING
    input.ReqMap.accountId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteExperimentTemplate

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

DeleteTargetAccountConfiguration

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

GetAction

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

GetExperiment

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

GetExperimentTargetAccountConfiguration

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

GetExperimentTemplate

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

GetSafetyLever

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

GetTargetAccountConfiguration

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

GetTargetResourceType

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

ListActions

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

ListExperimentResolvedTargets

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

ListExperimentTargetAccountConfigurations

valid {
    input.ReqMap.id == STRING
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListExperimentTemplates

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

ListExperiments

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

ListTagsForResource

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

ListTargetAccountConfigurations

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

ListTargetResourceTypes

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

StartExperiment

enum_ActionsMode := [ "skip-all", "run-all" ]

valid {
    input.Body.clientToken == STRING
    input.Body.experimentTemplateId == STRING
    input.Body.experimentOptions.actionsMode == enum_ActionsMode[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StopExperiment

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

TagResource

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

UntagResource

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

UpdateExperimentTemplate

enum_EmptyTargetResolutionMode := [ "fail", "skip" ]

valid {
    input.Body.description == STRING
    input.Body.stopConditions[_].source == STRING
    input.Body.stopConditions[_].value == STRING
    input.Body.targets.STRING.resourceType == STRING
    input.Body.targets.STRING.resourceArns[_] == STRING
    input.Body.targets.STRING.resourceTags.STRING == STRING
    input.Body.targets.STRING.filters[_].path == STRING
    input.Body.targets.STRING.filters[_].values[_] == STRING
    input.Body.targets.STRING.selectionMode == STRING
    input.Body.targets.STRING.parameters.STRING == STRING
    input.Body.actions.STRING.actionId == STRING
    input.Body.actions.STRING.description == STRING
    input.Body.actions.STRING.parameters.STRING == STRING
    input.Body.actions.STRING.targets.STRING == STRING
    input.Body.actions.STRING.startAfter[_] == STRING
    input.Body.roleArn == STRING
    input.Body.logConfiguration.cloudWatchLogsConfiguration.logGroupArn == STRING
    input.Body.logConfiguration.s3Configuration.bucketName == STRING
    input.Body.logConfiguration.s3Configuration.prefix == STRING
    input.Body.logConfiguration.logSchemaVersion == INTEGER
    input.Body.experimentOptions.emptyTargetResolutionMode == enum_EmptyTargetResolutionMode[_]
    input.Body.experimentReportConfiguration.outputs.s3Configuration.bucketName == STRING
    input.Body.experimentReportConfiguration.outputs.s3Configuration.prefix == STRING
    input.Body.experimentReportConfiguration.dataSources.cloudWatchDashboards[_].dashboardIdentifier == STRING
    input.Body.experimentReportConfiguration.preExperimentDuration == STRING
    input.Body.experimentReportConfiguration.postExperimentDuration == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateSafetyLeverState

enum_SafetyLeverStatusInput := [ "disengaged", "engaged" ]

valid {
    input.Body.state.status == enum_SafetyLeverStatusInput[_]
    input.Body.state.reason == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTargetAccountConfiguration

valid {
    input.Body.roleArn == STRING
    input.Body.description == STRING
    input.ReqMap.id == STRING
    input.ReqMap.accountId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}