{
  "typeName" : "AWS::SecurityHub::AutomationRule",
  "description" : "The ``AWS::SecurityHub::AutomationRule`` resource specifies an automation rule based on input parameters. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.",
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub",
  "definitions" : {
    "Tags" : {
      "description" : "A key-value pair to associate with a resource.",
      "type" : "object",
      "additionalProperties" : false,
      "patternProperties" : {
        "^[a-zA-Z0-9]{1,128}$" : {
          "type" : "string",
          "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
          "minLength" : 0,
          "maxLength" : 256
        }
      }
    },
    "NonEmptyString" : {
      "type" : "string",
      "minLength" : 1
    },
    "DateFilter" : {
      "description" : "A date filter for querying findings.",
      "properties" : {
        "DateRange" : {
          "$ref" : "#/definitions/DateRange",
          "description" : "A date range for the date filter."
        },
        "End" : {
          "$ref" : "#/definitions/ISO8601DateString",
          "description" : "A timestamp that provides the end date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)."
        },
        "Start" : {
          "$ref" : "#/definitions/ISO8601DateString",
          "description" : "A timestamp that provides the start date for the date filter.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps)."
        }
      },
      "type" : "object",
      "oneOf" : [ {
        "required" : [ "DateRange" ]
      }, {
        "allOf" : [ {
          "required" : [ "Start" ]
        }, {
          "required" : [ "End" ]
        } ]
      } ],
      "additionalProperties" : false
    },
    "DateRange" : {
      "description" : "A date range for the date filter.",
      "properties" : {
        "Unit" : {
          "description" : "A date range unit for the date filter.",
          "enum" : [ "DAYS" ],
          "type" : "string"
        },
        "Value" : {
          "description" : "A date range value for the date filter.",
          "type" : "number"
        }
      },
      "required" : [ "Unit", "Value" ],
      "type" : "object",
      "additionalProperties" : false
    },
    "BooleanFilter" : {
      "description" : "",
      "properties" : {
        "Value" : {
          "description" : "The value of the boolean.",
          "type" : "boolean"
        }
      },
      "required" : [ "Value" ],
      "type" : "object",
      "additionalProperties" : false
    },
    "MapFilter" : {
      "description" : "A map filter for filtering ASHlong findings. Each map filter provides the field to check for, the value to check for, and the comparison operator.",
      "properties" : {
        "Comparison" : {
          "description" : "The condition to apply to the key value when filtering Security Hub CSPM findings with a map filter.\n To search for values that have the filter value, use one of the following comparison operators:\n  +  To search for values that include the filter value, use ``CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department CONTAINS Security`` matches findings that include the value ``Security`` for the ``Department`` tag. In the same example, a finding with a value of ``Security team`` for the ``Department`` tag is a match.\n  +  To search for values that exactly match the filter value, use ``EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department EQUALS Security`` matches findings that have the value ``Security`` for the ``Department`` tag.\n  \n ``CONTAINS`` and ``EQUALS`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Department CONTAINS Security OR Department CONTAINS Finance`` match a finding that includes either ``Security``, ``Finance``, or both values.\n To search for values that don't have the filter value, use one of the following comparison operators:\n  +  To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_CONTAINS Finance`` matches findings that exclude the value ``Finance`` for the ``Department`` tag.\n  +  To search for values other than the filter value, use ``NOT_EQUALS``. For example, for the ``ResourceTags`` field, the filter ``Department NOT_EQUALS Finance`` matches findings that don’t have the value ``Finance`` for the ``Department`` tag.\n  \n ``NOT_CONTAINS`` and ``NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Department NOT_CONTAINS Security AND Department NOT_CONTAINS Finance`` match a finding that excludes both the ``Security`` and ``Finance`` values.\n ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters.\n You can’t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can’t have both an ``EQUALS`` filter and a ``NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*.",
          "enum" : [ "EQUALS", "NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" ],
          "type" : "string"
        },
        "Key" : {
          "description" : "The key of the map filter. For example, for ``ResourceTags``, ``Key`` identifies the name of the tag. For ``UserDefinedFields``, ``Key`` is the name of the field.",
          "type" : "string"
        },
        "Value" : {
          "description" : "The value for the key in the map filter. Filter values are case sensitive. For example, one of the values for a tag called ``Department`` might be ``Security``. If you provide ``security`` as the filter value, then there's no match.",
          "type" : "string"
        }
      },
      "required" : [ "Comparison", "Key", "Value" ],
      "type" : "object",
      "additionalProperties" : false
    },
    "NumberFilter" : {
      "description" : "A number filter for querying findings.",
      "properties" : {
        "Eq" : {
          "description" : "The equal-to condition to be applied to a single field when querying for findings.",
          "type" : "number"
        },
        "Gte" : {
          "description" : "The greater-than-equal condition to be applied to a single field when querying for findings.",
          "type" : "number"
        },
        "Lte" : {
          "description" : "The less-than-equal condition to be applied to a single field when querying for findings.",
          "type" : "number"
        }
      },
      "oneOf" : [ {
        "required" : [ "Eq" ]
      }, {
        "anyOf" : [ {
          "required" : [ "Gte" ]
        }, {
          "required" : [ "Lte" ]
        } ]
      } ],
      "type" : "object",
      "additionalProperties" : false
    },
    "StringFilter" : {
      "description" : "A string filter for filtering ASHlong findings.",
      "properties" : {
        "Comparison" : {
          "$ref" : "#/definitions/StringFilterComparison",
          "description" : "The condition to apply to a string value when filtering Security Hub CSPM findings.\n To search for values that have the filter value, use one of the following comparison operators:\n  +  To search for values that include the filter value, use ``CONTAINS``. For example, the filter ``Title CONTAINS CloudFront`` matches findings that have a ``Title`` that includes the string CloudFront.\n  +  To search for values that exactly match the filter value, use ``EQUALS``. For example, the filter ``AwsAccountId EQUALS 123456789012`` only matches findings that have an account ID of ``123456789012``.\n  +  To search for values that start with the filter value, use ``PREFIX``. For example, the filter ``ResourceRegion PREFIX us`` matches findings that have a ``ResourceRegion`` that starts with ``us``. A ``ResourceRegion`` that starts with a different value, such as ``af``, ``ap``, or ``ca``, doesn't match.\n  \n ``CONTAINS``, ``EQUALS``, and ``PREFIX`` filters on the same field are joined by ``OR``. A finding matches if it matches any one of those filters. For example, the filters ``Title CONTAINS CloudFront OR Title CONTAINS CloudWatch`` match a finding that includes either ``CloudFront``, ``CloudWatch``, or both strings in the title.\n To search for values that don’t have the filter value, use one of the following comparison operators:\n  +  To search for values that exclude the filter value, use ``NOT_CONTAINS``. For example, the filter ``Title NOT_CONTAINS CloudFront`` matches findings that have a ``Title`` that excludes the string CloudFront.\n  +  To search for values other than the filter value, use ``NOT_EQUALS``. For example, the filter ``AwsAccountId NOT_EQUALS 123456789012`` only matches findings that have an account ID other than ``123456789012``.\n  +  To search for values that don't start with the filter value, use ``PREFIX_NOT_EQUALS``. For example, the filter ``ResourceRegion PREFIX_NOT_EQUALS us`` matches findings with a ``ResourceRegion`` that starts with a value other than ``us``.\n  \n ``NOT_CONTAINS``, ``NOT_EQUALS``, and ``PREFIX_NOT_EQUALS`` filters on the same field are joined by ``AND``. A finding matches only if it matches all of those filters. For example, the filters ``Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch`` match a finding that excludes both ``CloudFront`` and ``CloudWatch`` in the title.\n You can’t have both a ``CONTAINS`` filter and a ``NOT_CONTAINS`` filter on the same field. Similarly, you can't provide both an ``EQUALS`` filter and a ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filter on the same field. Combining filters in this way returns an error. ``CONTAINS`` filters can only be used with other ``CONTAINS`` filters. ``NOT_CONTAINS`` filters can only be used with other ``NOT_CONTAINS`` filters. \n You can combine ``PREFIX`` filters with ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters for the same field. Security Hub CSPM first processes the ``PREFIX`` filters, and then the ``NOT_EQUALS`` or ``PREFIX_NOT_EQUALS`` filters.\n For example, for the following filters, Security Hub CSPM first identifies findings that have resource types that start with either ``AwsIam`` or ``AwsEc2``. It then excludes findings that have a resource type of ``AwsIamPolicy`` and findings that have a resource type of ``AwsEc2NetworkInterface``.\n  +   ``ResourceType PREFIX AwsIam`` \n  +   ``ResourceType PREFIX AwsEc2`` \n  +   ``ResourceType NOT_EQUALS AwsIamPolicy`` \n  +   ``ResourceType NOT_EQUALS AwsEc2NetworkInterface`` \n  \n ``CONTAINS`` and ``NOT_CONTAINS`` operators can be used only with automation rules V1. ``CONTAINS_WORD`` operator is only supported in ``GetFindingsV2``, ``GetFindingStatisticsV2``, ``GetResourcesV2``, and ``GetResourcesStatisticsV2`` APIs. For more information, see [Automation rules](https://docs.aws.amazon.com/securityhub/latest/userguide/automation-rules.html) in the *User Guide*."
        },
        "Value" : {
          "description" : "The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is ``Security Hub CSPM``. If you provide ``security hub`` as the filter value, there's no match.",
          "type" : "string"
        }
      },
      "required" : [ "Comparison", "Value" ],
      "type" : "object",
      "additionalProperties" : false
    },
    "StringFilterComparison" : {
      "description" : "The condition to apply to a string value when filtering Security Hub findings.",
      "enum" : [ "EQUALS", "PREFIX", "NOT_EQUALS", "PREFIX_NOT_EQUALS", "CONTAINS", "NOT_CONTAINS" ],
      "type" : "string"
    },
    "ISO8601DateString" : {
      "description" : "The date and time, in UTC and ISO 8601 format.",
      "type" : "string",
      "pattern" : "^(\\d\\d\\d\\d)-([0][1-9]|[1][0-2])-([0][1-9]|[1-2](\\d)|[3][0-1])[T](?:([0-1](\\d)|[2][0-3]):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?([Z]|[+-](\\d\\d)(:?(\\d\\d))?)$"
    },
    "arn" : {
      "description" : "The Amazon Resource Name (ARN) of the automation rule.",
      "type" : "string",
      "minLength" : 12,
      "maxLength" : 2048,
      "pattern" : "^arn:(aws|aws-cn|aws-us-gov|aws-iso-?[a-z]{0,2}):[A-Za-z0-9]{1,63}:[a-z]+-([a-z]{1,10}-)?[a-z]+-[0-9]+:([0-9]{12})?:.+$"
    },
    "arnOrId" : {
      "description" : "The Amazon Resource Name (ARN) or Id of the automation rule.",
      "anyOf" : [ {
        "type" : "string",
        "minLength" : 1,
        "maxLength" : 512
      }, {
        "$ref" : "#/definitions/arn"
      } ]
    },
    "timestamp" : {
      "type" : "string",
      "format" : "date-time",
      "pattern" : "(\\d\\d\\d\\d)-[0-1](\\d)-[0-3](\\d)[Tt](?:[0-2](\\d):[0-5](\\d):[0-5](\\d)|23:59:60)(?:\\.(\\d)+)?(?:[Zz]|[+-](\\d\\d)(?::?(\\d\\d))?)$"
    },
    "int100" : {
      "description" : "Integer from 0 to 100.",
      "type" : "integer",
      "minimum" : 0,
      "maximum" : 100
    },
    "map" : {
      "description" : "An object of user-defined name and value string pair added to a finding.",
      "type" : "object",
      "minProperties" : 1,
      "maxProperties" : 50,
      "patternProperties" : {
        "^[-_+=.:/@\\w\\s]{1,128}$" : {
          "description" : "The value for the key in the map",
          "type" : "string",
          "minLength" : 0,
          "maxLength" : 1024
        }
      },
      "additionalProperties" : false
    },
    "RelatedFinding" : {
      "description" : "Provides details about a list of findings that the current finding relates to.",
      "type" : "object",
      "properties" : {
        "ProductArn" : {
          "$ref" : "#/definitions/arn",
          "description" : "The Amazon Resource Name (ARN) for the product that generated a related finding."
        },
        "Id" : {
          "$ref" : "#/definitions/arnOrId",
          "description" : "The product-generated identifier for a related finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items."
        }
      },
      "additionalProperties" : false,
      "required" : [ "ProductArn", "Id" ]
    },
    "NoteUpdate" : {
      "description" : "The updated note.",
      "type" : "object",
      "properties" : {
        "Text" : {
          "description" : "The updated note text.",
          "type" : "string",
          "minLength" : 1,
          "maxLength" : 512
        },
        "UpdatedBy" : {
          "$ref" : "#/definitions/arnOrId",
          "description" : "The principal that updated the note."
        }
      },
      "additionalProperties" : false,
      "required" : [ "Text", "UpdatedBy" ]
    },
    "WorkflowUpdate" : {
      "description" : "Used to update information about the investigation into the finding.",
      "type" : "object",
      "properties" : {
        "Status" : {
          "description" : "The status of the investigation into the finding. The workflow status is specific to an individual finding. It does not affect the generation of new findings. For example, setting the workflow status to ``SUPPRESSED`` or ``RESOLVED`` does not prevent a new finding for the same issue.\n The allowed values are the following.\n  +  ``NEW`` - The initial state of a finding, before it is reviewed.\n Security Hub CSPM also resets ``WorkFlowStatus`` from ``NOTIFIED`` or ``RESOLVED`` to ``NEW`` in the following cases:\n  +  The record state changes from ``ARCHIVED`` to ``ACTIVE``.\n  +  The compliance status changes from ``PASSED`` to either ``WARNING``, ``FAILED``, or ``NOT_AVAILABLE``.\n  \n  +  ``NOTIFIED`` - Indicates that you notified the resource owner about the security issue. Used when the initial reviewer is not the resource owner, and needs intervention from the resource owner.\n  +  ``RESOLVED`` - The finding was reviewed and remediated and is now considered resolved.\n  +  ``SUPPRESSED`` - Indicates that you reviewed the finding and don't believe that any action is needed. The finding is no longer updated.",
          "type" : "string",
          "enum" : [ "NEW", "NOTIFIED", "RESOLVED", "SUPPRESSED" ]
        }
      },
      "required" : [ "Status" ],
      "additionalProperties" : false
    },
    "SeverityUpdate" : {
      "description" : "Updates to the severity information for a finding.",
      "type" : "object",
      "properties" : {
        "Product" : {
          "description" : "The native severity as defined by the AWS service or integrated partner product that generated the finding.",
          "type" : "number"
        },
        "Label" : {
          "description" : "The severity value of the finding. The allowed values are the following.\n  +  ``INFORMATIONAL`` - No issue was found.\n  +  ``LOW`` - The issue does not require action on its own.\n  +  ``MEDIUM`` - The issue must be addressed but not urgently.\n  +  ``HIGH`` - The issue must be addressed as a priority.\n  +  ``CRITICAL`` - The issue must be remediated immediately to avoid it escalating.",
          "type" : "string",
          "enum" : [ "INFORMATIONAL", "LOW", "MEDIUM", "HIGH", "CRITICAL" ]
        },
        "Normalized" : {
          "$ref" : "#/definitions/int100",
          "description" : "The normalized severity for the finding. This attribute is to be deprecated in favor of ``Label``.\n If you provide ``Normalized`` and don't provide ``Label``, ``Label`` is set automatically as follows.\n  +  0 - ``INFORMATIONAL``\n  +  1–39 - ``LOW``\n  +  40–69 - ``MEDIUM``\n  +  70–89 - ``HIGH``\n  +  90–100 - ``CRITICAL``"
        }
      },
      "additionalProperties" : false
    },
    "AutomationRulesFindingFieldsUpdate" : {
      "description" : "Identifies the finding fields that the automation rule action updates when a finding matches the defined criteria.",
      "type" : "object",
      "properties" : {
        "Types" : {
          "description" : "The rule action updates the ``Types`` field of a finding.",
          "type" : "array",
          "maxItems" : 50,
          "uniqueItems" : true,
          "items" : {
            "type" : "string",
            "pattern" : "^([^/]+)(/[^/]+){0,2}$"
          }
        },
        "Severity" : {
          "type" : "object",
          "description" : "The rule action will update the ``Severity`` field of a finding.",
          "$ref" : "#/definitions/SeverityUpdate"
        },
        "Confidence" : {
          "$ref" : "#/definitions/int100",
          "description" : "The rule action updates the ``Confidence`` field of a finding."
        },
        "Criticality" : {
          "$ref" : "#/definitions/int100",
          "description" : "The rule action updates the ``Criticality`` field of a finding."
        },
        "UserDefinedFields" : {
          "$ref" : "#/definitions/map",
          "description" : "The rule action updates the ``UserDefinedFields`` field of a finding."
        },
        "VerificationState" : {
          "description" : "The rule action updates the ``VerificationState`` field of a finding.",
          "type" : "string",
          "enum" : [ "UNKNOWN", "TRUE_POSITIVE", "FALSE_POSITIVE", "BENIGN_POSITIVE" ]
        },
        "RelatedFindings" : {
          "description" : "The rule action will update the ``RelatedFindings`` field of a finding.",
          "type" : "array",
          "minItems" : 1,
          "maxItems" : 10,
          "items" : {
            "$ref" : "#/definitions/RelatedFinding"
          }
        },
        "Note" : {
          "type" : "object",
          "description" : "The rule action will update the ``Note`` field of a finding.",
          "$ref" : "#/definitions/NoteUpdate"
        },
        "Workflow" : {
          "type" : "object",
          "description" : "The rule action will update the ``Workflow`` field of a finding.",
          "$ref" : "#/definitions/WorkflowUpdate"
        }
      }
    },
    "AutomationRulesAction" : {
      "description" : "One or more actions that ASHlong takes when a finding matches the defined criteria of a rule.",
      "type" : "object",
      "properties" : {
        "Type" : {
          "description" : "Specifies the type of action that Security Hub CSPM takes when a finding matches the defined criteria of a rule.",
          "type" : "string",
          "enum" : [ "FINDING_FIELDS_UPDATE" ]
        },
        "FindingFieldsUpdate" : {
          "$ref" : "#/definitions/AutomationRulesFindingFieldsUpdate",
          "description" : "Specifies that the automation rule action is an update to a finding field."
        }
      },
      "required" : [ "Type", "FindingFieldsUpdate" ]
    },
    "AutomationRulesFindingFilters" : {
      "description" : "The criteria that determine which findings a rule applies to.",
      "type" : "object",
      "additionalProperties" : false,
      "properties" : {
        "ProductArn" : {
          "description" : "The Amazon Resource Name (ARN) for a third-party product that generated a finding in Security Hub CSPM. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "AwsAccountId" : {
          "description" : "The AWS-account ID in which a finding was generated.\n  Array Members: Minimum number of 1 item. Maximum number of 100 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 100
        },
        "Id" : {
          "description" : "The product-specific identifier for a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "GeneratorId" : {
          "description" : "The identifier for the solution-specific component that generated a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 100 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 100
        },
        "Type" : {
          "description" : "One or more finding types in the format of namespace/category/classifier that classify a finding. For a list of namespaces, classifiers, and categories, see [Types taxonomy for ASFF](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format-type-taxonomy.html) in the *User Guide*.\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "FirstObservedAt" : {
          "description" : "A timestamp that indicates when the potential security issue captured by a finding was first observed by the security findings product. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/DateFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "LastObservedAt" : {
          "description" : "A timestamp that indicates when the security findings provider most recently observed a change in the resource that is involved in the finding. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/DateFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "CreatedAt" : {
          "description" : "A timestamp that indicates when this finding record was created. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/DateFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "UpdatedAt" : {
          "description" : "A timestamp that indicates when the finding record was most recently updated. \n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/DateFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "Confidence" : {
          "description" : "The likelihood that a finding accurately identifies the behavior or issue that it was intended to identify. ``Confidence`` is scored on a 0–100 basis using a ratio scale. A value of ``0`` means 0 percent confidence, and a value of ``100`` means 100 percent confidence. For example, a data exfiltration detection based on a statistical deviation of network traffic has low confidence because an actual exfiltration hasn't been verified. For more information, see [Confidence](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-confidence) in the *User Guide*.\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/NumberFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "Criticality" : {
          "description" : "The level of importance that is assigned to the resources that are associated with a finding. ``Criticality`` is scored on a 0–100 basis, using a ratio scale that supports only full integers. A score of ``0`` means that the underlying resources have no criticality, and a score of ``100`` is reserved for the most critical resources. For more information, see [Criticality](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-top-level-attributes.html#asff-criticality) in the *User Guide*.\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/NumberFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "Title" : {
          "description" : "A finding's title. \n  Array Members: Minimum number of 1 item. Maximum number of 100 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 100
        },
        "Description" : {
          "description" : "A finding's description. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "SourceUrl" : {
          "description" : "Provides a URL that links to a page about the current finding in the finding product. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ProductName" : {
          "description" : "Provides the name of the product that generated the finding. For control-based findings, the product name is Security Hub CSPM. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "CompanyName" : {
          "description" : "The name of the company for the product that generated the finding. For control-based findings, the company is AWS. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "SeverityLabel" : {
          "description" : "The severity value of the finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ResourceType" : {
          "description" : "A finding's title. \n  Array Members: Minimum number of 1 item. Maximum number of 100 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ResourceId" : {
          "description" : "The identifier for the given resource type. For AWS resources that are identified by Amazon Resource Names (ARNs), this is the ARN. For AWS resources that lack ARNs, this is the identifier as defined by the AWS-service that created the resource. For non-AWS resources, this is a unique identifier that is associated with the resource. \n  Array Members: Minimum number of 1 item. Maximum number of 100 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 100
        },
        "ResourcePartition" : {
          "description" : "The partition in which the resource that the finding pertains to is located. A partition is a group of AWS-Regions. Each AWS-account is scoped to one partition. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ResourceRegion" : {
          "description" : "The AWS-Region where the resource that a finding pertains to is located. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ResourceTags" : {
          "description" : "A list of AWS tags associated with a resource at the time the finding was processed. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/MapFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ResourceDetailsOther" : {
          "description" : "Custom fields and values about the resource that a finding pertains to. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/MapFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ComplianceStatus" : {
          "description" : "The result of a security check. This field is only used for findings generated from controls. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ComplianceSecurityControlId" : {
          "description" : "The security control ID for which a finding was generated. Security control IDs are the same across standards.\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "ComplianceAssociatedStandardsId" : {
          "description" : "The unique identifier of a standard in which a control is enabled. This field consists of the resource portion of the Amazon Resource Name (ARN) returned for a standard in the [DescribeStandards](https://docs.aws.amazon.com/securityhub/1.0/APIReference/API_DescribeStandards.html) API response.\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "VerificationState" : {
          "description" : "Provides the veracity of a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "WorkflowStatus" : {
          "description" : "Provides information about the status of the investigation into a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "RecordState" : {
          "description" : "Provides the current state of a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "RelatedFindingsProductArn" : {
          "description" : "The ARN for the product that generated a related finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "RelatedFindingsId" : {
          "description" : "The product-generated identifier for a related finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "NoteText" : {
          "description" : "The text of a user-defined note that's added to a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "NoteUpdatedAt" : {
          "description" : "The timestamp of when the note was updated.\n For more information about the validation and formatting of timestamp fields in ASHlong, see [Timestamps](https://docs.aws.amazon.com/securityhub/1.0/APIReference/Welcome.html#timestamps).\n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/DateFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "NoteUpdatedBy" : {
          "description" : "The principal that created a note. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/StringFilter"
          },
          "type" : "array",
          "maxItems" : 20
        },
        "UserDefinedFields" : {
          "description" : "A list of user-defined name and value string pairs added to a finding. \n  Array Members: Minimum number of 1 item. Maximum number of 20 items.",
          "items" : {
            "$ref" : "#/definitions/MapFilter"
          },
          "type" : "array",
          "maxItems" : 20
        }
      }
    }
  },
  "properties" : {
    "RuleArn" : {
      "description" : "",
      "type" : "string",
      "pattern" : "arn:aws\\S*:securityhub:\\S*"
    },
    "RuleStatus" : {
      "description" : "Whether the rule is active after it is created. If this parameter is equal to ``ENABLED``, ASH applies the rule to findings and finding updates after the rule is created.",
      "type" : "string",
      "enum" : [ "ENABLED", "DISABLED" ]
    },
    "RuleOrder" : {
      "description" : "An integer ranging from 1 to 1000 that represents the order in which the rule action is applied to findings. Security Hub CSPM applies rules with lower values for this parameter first.",
      "type" : "integer",
      "minimum" : 1,
      "maximum" : 1000
    },
    "Description" : {
      "description" : "A description of the rule.",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 1024
    },
    "RuleName" : {
      "description" : "The name of the rule.",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 256
    },
    "CreatedAt" : {
      "description" : "",
      "$ref" : "#/definitions/ISO8601DateString"
    },
    "UpdatedAt" : {
      "description" : "",
      "$ref" : "#/definitions/ISO8601DateString"
    },
    "CreatedBy" : {
      "description" : "",
      "type" : "string",
      "minLength" : 1,
      "maxLength" : 256
    },
    "IsTerminal" : {
      "description" : "Specifies whether a rule is the last to be applied with respect to a finding that matches the rule criteria. This is useful when a finding matches the criteria for multiple rules, and each rule has different actions. If a rule is terminal, Security Hub CSPM applies the rule action to a finding that matches the rule criteria and doesn't evaluate other rules for the finding. By default, a rule isn't terminal.",
      "type" : "boolean"
    },
    "Actions" : {
      "type" : "array",
      "description" : "One or more actions to update finding fields if a finding matches the conditions specified in ``Criteria``.",
      "items" : {
        "$ref" : "#/definitions/AutomationRulesAction"
      },
      "minItems" : 1,
      "maxItems" : 1
    },
    "Criteria" : {
      "description" : "A set of [Security Finding Format (ASFF)](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-findings-format.html) finding field attributes and corresponding expected values that ASH uses to filter findings. If a rule is enabled and a finding matches the criteria specified in this parameter, ASH applies the rule action to the finding.",
      "$ref" : "#/definitions/AutomationRulesFindingFilters"
    },
    "Tags" : {
      "description" : "User-defined tags associated with an automation rule.",
      "$ref" : "#/definitions/Tags"
    }
  },
  "additionalProperties" : false,
  "required" : [ "RuleOrder", "RuleName", "Description", "Criteria", "Actions" ],
  "primaryIdentifier" : [ "/properties/RuleArn" ],
  "readOnlyProperties" : [ "/properties/RuleArn", "/properties/CreatedAt", "/properties/UpdatedAt", "/properties/CreatedBy" ],
  "tagging" : {
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "cloudFormationSystemTags" : true,
    "tagProperty" : "/properties/Tags",
    "permissions" : [ "securityhub:ListTagsForResource", "securityhub:TagResource", "securityhub:UntagResource" ]
  },
  "handlers" : {
    "create" : {
      "permissions" : [ "securityhub:CreateAutomationRule", "securityhub:TagResource", "securityhub:ListTagsForResource" ]
    },
    "read" : {
      "permissions" : [ "securityhub:ListAutomationRules", "securityhub:BatchGetAutomationRules", "securityhub:ListTagsForResource" ]
    },
    "update" : {
      "permissions" : [ "securityhub:BatchUpdateAutomationRules", "securityhub:TagResource", "securityhub:UntagResource", "securityhub:ListTagsForResource" ]
    },
    "delete" : {
      "permissions" : [ "securityhub:BatchDeleteAutomationRules", "securityhub:BatchGetAutomationRules" ]
    },
    "list" : {
      "permissions" : [ "securityhub:ListAutomationRules", "securityhub:ListTagsForResource" ]
    }
  }
}