CLEANROOMS

BatchGetCollaborationAnalysisTemplate

valid {
    input.Body.analysisTemplateArns[_] == STRING
    input.ReqMap.collaborationIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetSchema

valid {
    input.Body.names[_] == STRING
    input.ReqMap.collaborationIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

BatchGetSchemaAnalysisRule

enum_AnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]

valid {
    input.Body.schemaAnalysisRuleRequests[_].name == STRING
    input.Body.schemaAnalysisRuleRequests[_].type == enum_AnalysisRuleType[_]
    input.ReqMap.collaborationIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateAnalysisTemplate

enum_AnalysisFormat := [ "SQL" ]
enum_ParameterType := [ "SMALLINT", "INTEGER", "BIGINT", "DECIMAL", "REAL", "DOUBLE_PRECISION", "BOOLEAN", "CHAR", "VARCHAR", "DATE", "TIMESTAMP", "TIMESTAMPTZ", "TIME", "TIMETZ", "VARBYTE" ]

valid {
    input.Body.description == STRING
    input.Body.name == STRING
    input.Body.format == enum_AnalysisFormat[_]
    input.Body.source.text == STRING
    input.Body.tags.STRING == STRING
    input.Body.analysisParameters[_].name == STRING
    input.Body.analysisParameters[_].type == enum_ParameterType[_]
    input.Body.analysisParameters[_].defaultValue == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateCollaboration

enum_CollaborationQueryLogStatus := [ "ENABLED", "DISABLED" ]
enum_MemberAbility := [ "CAN_QUERY", "CAN_RECEIVE_RESULTS" ]

valid {
    input.Body.members[_].accountId == STRING
    input.Body.members[_].memberAbilities[_] == enum_MemberAbility[_]
    input.Body.members[_].displayName == STRING
    input.Body.members[_].paymentConfiguration.queryCompute.isResponsible == BOOLEAN
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.creatorMemberAbilities[_] == enum_MemberAbility[_]
    input.Body.creatorDisplayName == STRING
    input.Body.dataEncryptionMetadata.allowCleartext == BOOLEAN
    input.Body.dataEncryptionMetadata.allowDuplicates == BOOLEAN
    input.Body.dataEncryptionMetadata.allowJoinsOnColumnsWithDifferentNames == BOOLEAN
    input.Body.dataEncryptionMetadata.preserveNulls == BOOLEAN
    input.Body.queryLogStatus == enum_CollaborationQueryLogStatus[_]
    input.Body.tags.STRING == STRING
    input.Body.creatorPaymentConfiguration.queryCompute.isResponsible == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfiguredAudienceModelAssociation

valid {
    input.Body.configuredAudienceModelArn == STRING
    input.Body.configuredAudienceModelAssociationName == STRING
    input.Body.manageResourcePolicies == BOOLEAN
    input.Body.tags.STRING == STRING
    input.Body.description == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfiguredTable

enum_AnalysisMethod := [ "DIRECT_QUERY" ]

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.tableReference.glue.tableName == STRING
    input.Body.tableReference.glue.databaseName == STRING
    input.Body.allowedColumns[_] == STRING
    input.Body.analysisMethod == enum_AnalysisMethod[_]
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfiguredTableAnalysisRule

enum_AggregateFunctionName := [ "SUM", "SUM_DISTINCT", "COUNT", "COUNT_DISTINCT", "AVG" ]
enum_AggregationType := [ "COUNT_DISTINCT" ]
enum_ConfiguredTableAnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]
enum_JoinOperator := [ "OR", "AND" ]
enum_JoinRequiredOption := [ "QUERY_RUNNER" ]
enum_ScalarFunctions := [ "ABS", "CAST", "CEILING", "COALESCE", "CONVERT", "CURRENT_DATE", "DATEADD", "EXTRACT", "FLOOR", "GETDATE", "LN", "LOG", "LOWER", "ROUND", "RTRIM", "SQRT", "SUBSTRING", "TO_CHAR", "TO_DATE", "TO_NUMBER", "TO_TIMESTAMP", "TRIM", "TRUNC", "UPPER" ]

valid {
    input.Body.analysisRuleType == enum_ConfiguredTableAnalysisRuleType[_]
    input.Body.analysisRulePolicy.v1.list.joinColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.list.allowedJoinOperators[_] == enum_JoinOperator[_]
    input.Body.analysisRulePolicy.v1.list.listColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.aggregateColumns[_].columnNames[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.aggregateColumns[_].function == enum_AggregateFunctionName[_]
    input.Body.analysisRulePolicy.v1.aggregation.joinColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.joinRequired == enum_JoinRequiredOption[_]
    input.Body.analysisRulePolicy.v1.aggregation.allowedJoinOperators[_] == enum_JoinOperator[_]
    input.Body.analysisRulePolicy.v1.aggregation.dimensionColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.scalarFunctions[_] == enum_ScalarFunctions[_]
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].columnName == STRING
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].minimum == INTEGER
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].type == enum_AggregationType[_]
    input.Body.analysisRulePolicy.v1.custom.allowedAnalyses[_] == STRING
    input.Body.analysisRulePolicy.v1.custom.allowedAnalysisProviders[_] == STRING
    input.Body.analysisRulePolicy.v1.custom.differentialPrivacy.columns[_].name == STRING
    input.ReqMap.configuredTableIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateConfiguredTableAssociation

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.Body.configuredTableIdentifier == STRING
    input.Body.roleArn == STRING
    input.Body.tags.STRING == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateMembership

enum_MembershipQueryLogStatus := [ "ENABLED", "DISABLED" ]
enum_ResultFormat := [ "CSV", "PARQUET" ]

valid {
    input.Body.collaborationIdentifier == STRING
    input.Body.queryLogStatus == enum_MembershipQueryLogStatus[_]
    input.Body.tags.STRING == STRING
    input.Body.defaultResultConfiguration.outputConfiguration.s3.resultFormat == enum_ResultFormat[_]
    input.Body.defaultResultConfiguration.outputConfiguration.s3.bucket == STRING
    input.Body.defaultResultConfiguration.outputConfiguration.s3.keyPrefix == STRING
    input.Body.defaultResultConfiguration.roleArn == STRING
    input.Body.paymentConfiguration.queryCompute.isResponsible == BOOLEAN
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreatePrivacyBudgetTemplate

enum_PrivacyBudgetTemplateAutoRefresh := [ "CALENDAR_MONTH", "NONE" ]
enum_PrivacyBudgetType := [ "DIFFERENTIAL_PRIVACY" ]

valid {
    input.Body.autoRefresh == enum_PrivacyBudgetTemplateAutoRefresh[_]
    input.Body.privacyBudgetType == enum_PrivacyBudgetType[_]
    input.Body.parameters.differentialPrivacy.epsilon == INTEGER
    input.Body.parameters.differentialPrivacy.usersNoisePerQuery == INTEGER
    input.Body.tags.STRING == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteAnalysisTemplate

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

DeleteCollaboration

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

DeleteConfiguredAudienceModelAssociation

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

DeleteConfiguredTable

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

DeleteConfiguredTableAnalysisRule

enum_ConfiguredTableAnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]

valid {
    input.ReqMap.configuredTableIdentifier == STRING
    input.ReqMap.analysisRuleType == enum_ConfiguredTableAnalysisRuleType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteConfiguredTableAssociation

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

DeleteMember

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

DeleteMembership

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

DeletePrivacyBudgetTemplate

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

GetAnalysisTemplate

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

GetCollaboration

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

GetCollaborationAnalysisTemplate

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

GetCollaborationConfiguredAudienceModelAssociation

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

GetCollaborationPrivacyBudgetTemplate

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

GetConfiguredAudienceModelAssociation

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

GetConfiguredTable

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

GetConfiguredTableAnalysisRule

enum_ConfiguredTableAnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]

valid {
    input.ReqMap.configuredTableIdentifier == STRING
    input.ReqMap.analysisRuleType == enum_ConfiguredTableAnalysisRuleType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

GetConfiguredTableAssociation

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

GetMembership

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

GetPrivacyBudgetTemplate

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

GetProtectedQuery

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

GetSchema

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

GetSchemaAnalysisRule

enum_AnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]

valid {
    input.ReqMap.collaborationIdentifier == STRING
    input.ReqMap.name == STRING
    input.ReqMap.type == enum_AnalysisRuleType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListAnalysisTemplates

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

ListCollaborationAnalysisTemplates

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

ListCollaborationConfiguredAudienceModelAssociations

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

ListCollaborationPrivacyBudgetTemplates

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

ListCollaborationPrivacyBudgets

enum_PrivacyBudgetType := [ "DIFFERENTIAL_PRIVACY" ]

valid {
    input.ReqMap.collaborationIdentifier == STRING
    input.Qs.privacyBudgetType == enum_PrivacyBudgetType[_]
    input.Qs.maxResults == INTEGER
    input.Qs.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListCollaborations

enum_FilterableMemberStatus := [ "INVITED", "ACTIVE" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.memberStatus == enum_FilterableMemberStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListConfiguredAudienceModelAssociations

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

ListConfiguredTableAssociations

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

ListConfiguredTables

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

ListMembers

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

ListMemberships

enum_MembershipStatus := [ "ACTIVE", "REMOVED", "COLLABORATION_DELETED" ]

valid {
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.Qs.status == enum_MembershipStatus[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListPrivacyBudgetTemplates

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

ListPrivacyBudgets

enum_PrivacyBudgetType := [ "DIFFERENTIAL_PRIVACY" ]

valid {
    input.ReqMap.membershipIdentifier == STRING
    input.Qs.privacyBudgetType == enum_PrivacyBudgetType[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListProtectedQueries

enum_ProtectedQueryStatus := [ "SUBMITTED", "STARTED", "CANCELLED", "CANCELLING", "FAILED", "SUCCESS", "TIMED_OUT" ]

valid {
    input.ReqMap.membershipIdentifier == STRING
    input.Qs.status == enum_ProtectedQueryStatus[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListSchemas

enum_SchemaType := [ "TABLE" ]

valid {
    input.ReqMap.collaborationIdentifier == STRING
    input.Qs.schemaType == enum_SchemaType[_]
    input.Qs.nextToken == STRING
    input.Qs.maxResults == INTEGER
    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
}

PreviewPrivacyImpact

valid {
    input.Body.parameters.differentialPrivacy.epsilon == INTEGER
    input.Body.parameters.differentialPrivacy.usersNoisePerQuery == INTEGER
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

StartProtectedQuery

enum_ProtectedQueryType := [ "SQL" ]
enum_ResultFormat := [ "CSV", "PARQUET" ]

valid {
    input.Body.type == enum_ProtectedQueryType[_]
    input.Body.sqlParameters.queryString == STRING
    input.Body.sqlParameters.analysisTemplateArn == STRING
    input.Body.sqlParameters.parameters.STRING == STRING
    input.Body.resultConfiguration.outputConfiguration.s3.resultFormat == enum_ResultFormat[_]
    input.Body.resultConfiguration.outputConfiguration.s3.bucket == STRING
    input.Body.resultConfiguration.outputConfiguration.s3.keyPrefix == STRING
    input.ReqMap.membershipIdentifier == 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
}

UpdateAnalysisTemplate

valid {
    input.Body.description == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ReqMap.analysisTemplateIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateCollaboration

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.ReqMap.collaborationIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfiguredAudienceModelAssociation

valid {
    input.Body.description == STRING
    input.Body.name == STRING
    input.ReqMap.configuredAudienceModelAssociationIdentifier == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfiguredTable

valid {
    input.Body.name == STRING
    input.Body.description == STRING
    input.ReqMap.configuredTableIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfiguredTableAnalysisRule

enum_AggregateFunctionName := [ "SUM", "SUM_DISTINCT", "COUNT", "COUNT_DISTINCT", "AVG" ]
enum_AggregationType := [ "COUNT_DISTINCT" ]
enum_ConfiguredTableAnalysisRuleType := [ "AGGREGATION", "LIST", "CUSTOM" ]
enum_JoinOperator := [ "OR", "AND" ]
enum_JoinRequiredOption := [ "QUERY_RUNNER" ]
enum_ScalarFunctions := [ "ABS", "CAST", "CEILING", "COALESCE", "CONVERT", "CURRENT_DATE", "DATEADD", "EXTRACT", "FLOOR", "GETDATE", "LN", "LOG", "LOWER", "ROUND", "RTRIM", "SQRT", "SUBSTRING", "TO_CHAR", "TO_DATE", "TO_NUMBER", "TO_TIMESTAMP", "TRIM", "TRUNC", "UPPER" ]

valid {
    input.Body.analysisRulePolicy.v1.list.joinColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.list.allowedJoinOperators[_] == enum_JoinOperator[_]
    input.Body.analysisRulePolicy.v1.list.listColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.aggregateColumns[_].columnNames[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.aggregateColumns[_].function == enum_AggregateFunctionName[_]
    input.Body.analysisRulePolicy.v1.aggregation.joinColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.joinRequired == enum_JoinRequiredOption[_]
    input.Body.analysisRulePolicy.v1.aggregation.allowedJoinOperators[_] == enum_JoinOperator[_]
    input.Body.analysisRulePolicy.v1.aggregation.dimensionColumns[_] == STRING
    input.Body.analysisRulePolicy.v1.aggregation.scalarFunctions[_] == enum_ScalarFunctions[_]
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].columnName == STRING
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].minimum == INTEGER
    input.Body.analysisRulePolicy.v1.aggregation.outputConstraints[_].type == enum_AggregationType[_]
    input.Body.analysisRulePolicy.v1.custom.allowedAnalyses[_] == STRING
    input.Body.analysisRulePolicy.v1.custom.allowedAnalysisProviders[_] == STRING
    input.Body.analysisRulePolicy.v1.custom.differentialPrivacy.columns[_].name == STRING
    input.ReqMap.configuredTableIdentifier == STRING
    input.ReqMap.analysisRuleType == enum_ConfiguredTableAnalysisRuleType[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateConfiguredTableAssociation

valid {
    input.Body.description == STRING
    input.Body.roleArn == STRING
    input.ReqMap.configuredTableAssociationIdentifier == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateMembership

enum_MembershipQueryLogStatus := [ "ENABLED", "DISABLED" ]
enum_ResultFormat := [ "CSV", "PARQUET" ]

valid {
    input.Body.queryLogStatus == enum_MembershipQueryLogStatus[_]
    input.Body.defaultResultConfiguration.outputConfiguration.s3.resultFormat == enum_ResultFormat[_]
    input.Body.defaultResultConfiguration.outputConfiguration.s3.bucket == STRING
    input.Body.defaultResultConfiguration.outputConfiguration.s3.keyPrefix == STRING
    input.Body.defaultResultConfiguration.roleArn == STRING
    input.ReqMap.membershipIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdatePrivacyBudgetTemplate

enum_PrivacyBudgetType := [ "DIFFERENTIAL_PRIVACY" ]

valid {
    input.Body.privacyBudgetType == enum_PrivacyBudgetType[_]
    input.Body.parameters.differentialPrivacy.epsilon == INTEGER
    input.Body.parameters.differentialPrivacy.usersNoisePerQuery == INTEGER
    input.ReqMap.membershipIdentifier == STRING
    input.ReqMap.privacyBudgetTemplateIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateProtectedQuery

enum_TargetProtectedQueryStatus := [ "CANCELLED" ]

valid {
    input.Body.targetStatus == enum_TargetProtectedQueryStatus[_]
    input.ReqMap.membershipIdentifier == STRING
    input.ReqMap.protectedQueryIdentifier == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}