SSM-INCIDENTS

BatchGetIncidentFindings

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

CreateReplicationSet

valid {
    input.Body.clientToken == STRING
    input.Body.regions.STRING.sseKmsKeyId == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateResponsePlan

enum_SsmTargetAccount := [ "RESPONSE_PLAN_OWNER_ACCOUNT", "IMPACTED_ACCOUNT" ]
enum_VariableType := [ "INCIDENT_RECORD_ARN", "INVOLVED_RESOURCES" ]

valid {
    input.Body.actions[_].ssmAutomation.documentName == STRING
    input.Body.actions[_].ssmAutomation.documentVersion == STRING
    input.Body.actions[_].ssmAutomation.dynamicParameters.STRING.variable == enum_VariableType[_]
    input.Body.actions[_].ssmAutomation.parameters.STRING[_] == STRING
    input.Body.actions[_].ssmAutomation.roleArn == STRING
    input.Body.actions[_].ssmAutomation.targetAccount == enum_SsmTargetAccount[_]
    input.Body.chatChannel.chatbotSns[_] == STRING
    input.Body.chatChannel.empty == {}
    input.Body.clientToken == STRING
    input.Body.displayName == STRING
    input.Body.engagements[_] == STRING
    input.Body.incidentTemplate.dedupeString == STRING
    input.Body.incidentTemplate.impact == INTEGER
    input.Body.incidentTemplate.incidentTags.STRING == STRING
    input.Body.incidentTemplate.notificationTargets[_].snsTopicArn == STRING
    input.Body.incidentTemplate.summary == STRING
    input.Body.incidentTemplate.title == STRING
    input.Body.integrations[_].pagerDutyConfiguration.name == STRING
    input.Body.integrations[_].pagerDutyConfiguration.pagerDutyIncidentConfiguration.serviceId == STRING
    input.Body.integrations[_].pagerDutyConfiguration.secretId == STRING
    input.Body.name == STRING
    input.Body.tags.STRING == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

CreateTimelineEvent

valid {
    input.Body.clientToken == STRING
    input.Body.eventData == STRING
    input.Body.eventReferences[_].relatedItemId == STRING
    input.Body.eventReferences[_].resource == STRING
    input.Body.eventTime == TIMESTAMP
    input.Body.eventType == STRING
    input.Body.incidentRecordArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

DeleteIncidentRecord

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

DeleteReplicationSet

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

DeleteResourcePolicy

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

DeleteResponsePlan

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

DeleteTimelineEvent

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

GetIncidentRecord

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

GetReplicationSet

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

GetResourcePolicies

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

GetResponsePlan

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

GetTimelineEvent

valid {
    input.Qs.eventId == STRING
    input.Qs.incidentRecordArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListIncidentFindings

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

ListIncidentRecords

valid {
    input.Body.filters[_].condition.after == TIMESTAMP
    input.Body.filters[_].condition.before == TIMESTAMP
    input.Body.filters[_].condition.equals.integerValues[_] == INTEGER
    input.Body.filters[_].condition.equals.stringValues[_] == STRING
    input.Body.filters[_].key == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

ListRelatedItems

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

ListReplicationSets

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

ListResponsePlans

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

ListTagsForResource

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

ListTimelineEvents

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

valid {
    input.Body.filters[_].condition.after == TIMESTAMP
    input.Body.filters[_].condition.before == TIMESTAMP
    input.Body.filters[_].condition.equals.integerValues[_] == INTEGER
    input.Body.filters[_].condition.equals.stringValues[_] == STRING
    input.Body.filters[_].key == STRING
    input.Body.incidentRecordArn == STRING
    input.Body.maxResults == INTEGER
    input.Body.nextToken == STRING
    input.Body.sortBy == enum_TimelineEventSort[_]
    input.Body.sortOrder == enum_SortOrder[_]
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

PutResourcePolicy

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

StartIncident

enum_ItemType := [ "ANALYSIS", "INCIDENT", "METRIC", "PARENT", "ATTACHMENT", "OTHER", "AUTOMATION", "INVOLVED_RESOURCE", "TASK" ]

valid {
    input.Body.clientToken == STRING
    input.Body.impact == INTEGER
    input.Body.relatedItems[_].generatedId == STRING
    input.Body.relatedItems[_].identifier.type == enum_ItemType[_]
    input.Body.relatedItems[_].identifier.value.arn == STRING
    input.Body.relatedItems[_].identifier.value.metricDefinition == STRING
    input.Body.relatedItems[_].identifier.value.pagerDutyIncidentDetail.autoResolve == BOOLEAN
    input.Body.relatedItems[_].identifier.value.pagerDutyIncidentDetail.id == STRING
    input.Body.relatedItems[_].identifier.value.pagerDutyIncidentDetail.secretId == STRING
    input.Body.relatedItems[_].identifier.value.url == STRING
    input.Body.relatedItems[_].title == STRING
    input.Body.responsePlanArn == STRING
    input.Body.title == STRING
    input.Body.triggerDetails.rawData == STRING
    input.Body.triggerDetails.source == STRING
    input.Body.triggerDetails.timestamp == TIMESTAMP
    input.Body.triggerDetails.triggerArn == 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
}

UpdateDeletionProtection

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

UpdateIncidentRecord

enum_IncidentRecordStatus := [ "OPEN", "RESOLVED" ]

valid {
    input.Body.arn == STRING
    input.Body.chatChannel.chatbotSns[_] == STRING
    input.Body.chatChannel.empty == {}
    input.Body.clientToken == STRING
    input.Body.impact == INTEGER
    input.Body.notificationTargets[_].snsTopicArn == STRING
    input.Body.status == enum_IncidentRecordStatus[_]
    input.Body.summary == STRING
    input.Body.title == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateRelatedItems

enum_ItemType := [ "ANALYSIS", "INCIDENT", "METRIC", "PARENT", "ATTACHMENT", "OTHER", "AUTOMATION", "INVOLVED_RESOURCE", "TASK" ]

valid {
    input.Body.clientToken == STRING
    input.Body.incidentRecordArn == STRING
    input.Body.relatedItemsUpdate.itemToAdd.generatedId == STRING
    input.Body.relatedItemsUpdate.itemToAdd.identifier.type == enum_ItemType[_]
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.arn == STRING
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.metricDefinition == STRING
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.pagerDutyIncidentDetail.autoResolve == BOOLEAN
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.pagerDutyIncidentDetail.id == STRING
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.pagerDutyIncidentDetail.secretId == STRING
    input.Body.relatedItemsUpdate.itemToAdd.identifier.value.url == STRING
    input.Body.relatedItemsUpdate.itemToAdd.title == STRING
    input.Body.relatedItemsUpdate.itemToRemove.type == enum_ItemType[_]
    input.Body.relatedItemsUpdate.itemToRemove.value.arn == STRING
    input.Body.relatedItemsUpdate.itemToRemove.value.metricDefinition == STRING
    input.Body.relatedItemsUpdate.itemToRemove.value.pagerDutyIncidentDetail.autoResolve == BOOLEAN
    input.Body.relatedItemsUpdate.itemToRemove.value.pagerDutyIncidentDetail.id == STRING
    input.Body.relatedItemsUpdate.itemToRemove.value.pagerDutyIncidentDetail.secretId == STRING
    input.Body.relatedItemsUpdate.itemToRemove.value.url == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateReplicationSet

valid {
    input.Body.actions[_].addRegionAction.regionName == STRING
    input.Body.actions[_].addRegionAction.sseKmsKeyId == STRING
    input.Body.actions[_].deleteRegionAction.regionName == STRING
    input.Body.arn == STRING
    input.Body.clientToken == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateResponsePlan

enum_SsmTargetAccount := [ "RESPONSE_PLAN_OWNER_ACCOUNT", "IMPACTED_ACCOUNT" ]
enum_VariableType := [ "INCIDENT_RECORD_ARN", "INVOLVED_RESOURCES" ]

valid {
    input.Body.actions[_].ssmAutomation.documentName == STRING
    input.Body.actions[_].ssmAutomation.documentVersion == STRING
    input.Body.actions[_].ssmAutomation.dynamicParameters.STRING.variable == enum_VariableType[_]
    input.Body.actions[_].ssmAutomation.parameters.STRING[_] == STRING
    input.Body.actions[_].ssmAutomation.roleArn == STRING
    input.Body.actions[_].ssmAutomation.targetAccount == enum_SsmTargetAccount[_]
    input.Body.arn == STRING
    input.Body.chatChannel.chatbotSns[_] == STRING
    input.Body.chatChannel.empty == {}
    input.Body.clientToken == STRING
    input.Body.displayName == STRING
    input.Body.engagements[_] == STRING
    input.Body.incidentTemplateDedupeString == STRING
    input.Body.incidentTemplateImpact == INTEGER
    input.Body.incidentTemplateNotificationTargets[_].snsTopicArn == STRING
    input.Body.incidentTemplateSummary == STRING
    input.Body.incidentTemplateTags.STRING == STRING
    input.Body.incidentTemplateTitle == STRING
    input.Body.integrations[_].pagerDutyConfiguration.name == STRING
    input.Body.integrations[_].pagerDutyConfiguration.pagerDutyIncidentConfiguration.serviceId == STRING
    input.Body.integrations[_].pagerDutyConfiguration.secretId == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}

UpdateTimelineEvent

valid {
    input.Body.clientToken == STRING
    input.Body.eventData == STRING
    input.Body.eventId == STRING
    input.Body.eventReferences[_].relatedItemId == STRING
    input.Body.eventReferences[_].resource == STRING
    input.Body.eventTime == TIMESTAMP
    input.Body.eventType == STRING
    input.Body.incidentRecordArn == STRING
    input.ProviderMetadata.Account == STRING
    input.ProviderMetadata.AccessKeyId == STRING
    input.ProviderMetadata.Region == STRING
}