{
 "additionalIdentifiers": [
  [
   "/properties/SecurityControlArn"
  ]
 ],
 "additionalProperties": false,
 "anyOf": [
  {
   "required": [
    "SecurityControlId"
   ]
  },
  {
   "required": [
    "SecurityControlArn"
   ]
  }
 ],
 "createOnlyProperties": [
  "/properties/SecurityControlId"
 ],
 "definitions": {
  "IntegerList": {
   "items": {
    "type": "integer"
   },
   "type": "array"
  },
  "NonEmptyString": {
   "pattern": ".*\\S.*",
   "type": "string"
  },
  "NonEmptyStringList": {
   "items": {
    "$ref": "#/definitions/NonEmptyString"
   },
   "type": "array"
  },
  "ParameterConfiguration": {
   "additionalProperties": false,
   "properties": {
    "Value": {
     "$ref": "#/definitions/ParameterValue"
    },
    "ValueType": {
     "enum": [
      "DEFAULT",
      "CUSTOM"
     ],
     "type": "string"
    }
   },
   "required": [
    "ValueType"
   ],
   "type": "object"
  },
  "ParameterValue": {
   "additionalProperties": false,
   "oneOf": [
    {
     "required": [
      "Boolean"
     ]
    },
    {
     "required": [
      "Double"
     ]
    },
    {
     "required": [
      "Enum"
     ]
    },
    {
     "required": [
      "EnumList"
     ]
    },
    {
     "required": [
      "Integer"
     ]
    },
    {
     "required": [
      "IntegerList"
     ]
    },
    {
     "required": [
      "String"
     ]
    },
    {
     "required": [
      "StringList"
     ]
    }
   ],
   "properties": {
    "Boolean": {
     "type": "boolean"
    },
    "Double": {
     "type": "number"
    },
    "Enum": {
     "$ref": "#/definitions/NonEmptyString"
    },
    "EnumList": {
     "$ref": "#/definitions/NonEmptyStringList"
    },
    "Integer": {
     "type": "integer"
    },
    "IntegerList": {
     "$ref": "#/definitions/IntegerList"
    },
    "String": {
     "$ref": "#/definitions/NonEmptyString"
    },
    "StringList": {
     "$ref": "#/definitions/NonEmptyStringList"
    }
   },
   "type": "object"
  },
  "Parameters": {
   "additionalProperties": false,
   "patternProperties": {
    ".*\\S.*": {
     "$ref": "#/definitions/ParameterConfiguration"
    }
   },
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/SecurityControlId"
 ],
 "properties": {
  "LastUpdateReason": {
   "pattern": "^([^\u0000-\u007f]|[-_ a-zA-Z0-9])+$",
   "type": "string"
  },
  "Parameters": {
   "$ref": "#/definitions/Parameters"
  },
  "SecurityControlArn": {
   "$ref": "#/definitions/NonEmptyString"
  },
  "SecurityControlId": {
   "$ref": "#/definitions/NonEmptyString"
  }
 },
 "required": [
  "Parameters"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-securityhub",
 "tagging": {
  "taggable": false
 },
 "typeName": "AWS::SecurityHub::SecurityControl"
}
