{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-msk-cluster.json",
  "title": "AWSMSKClusterProperties",
  "description": "Resource Type definition for AWS::MSK::Cluster. Source:- No source definition found, add manually please",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-msk-cluster.json",
    "sourceSha256": "74bcd10b9de29d9e73d057ebca73a95b635e9145cb3df0dcb9afc0f074e92cff"
  },
  "type": "object",
  "properties": {
    "BrokerNodeGroupInfo": {
      "$ref": "#/$defs/BrokerNodeGroupInfo"
    },
    "EnhancedMonitoring": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 7,
          "maxLength": 23,
          "enum": [
            "DEFAULT",
            "PER_BROKER",
            "PER_TOPIC_PER_BROKER",
            "PER_TOPIC_PER_PARTITION"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ]
    },
    "KafkaVersion": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ]
    },
    "NumberOfBrokerNodes": {
      "type": "integer"
    },
    "EncryptionInfo": {
      "$ref": "#/$defs/EncryptionInfo"
    },
    "OpenMonitoring": {
      "$ref": "#/$defs/OpenMonitoring"
    },
    "ClusterName": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ]
    },
    "CurrentVersion": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The current version of the MSK cluster"
    },
    "ClientAuthentication": {
      "$ref": "#/$defs/ClientAuthentication"
    },
    "LoggingInfo": {
      "$ref": "#/$defs/LoggingInfo"
    },
    "Tags": {
      "type": "object",
      "description": "A key-value pair to associate with a resource.",
      "additionalProperties": false,
      "patternProperties": {
        "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$": {
          "type": "string"
        }
      }
    },
    "ConfigurationInfo": {
      "$ref": "#/$defs/ConfigurationInfo"
    },
    "StorageMode": {
      "oneOf": [
        {
          "type": "string",
          "minLength": 5,
          "maxLength": 6,
          "enum": [
            "LOCAL",
            "TIERED"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ]
    }
  },
  "typeName": "AWS::MSK::Cluster",
  "tagging": {
    "taggable": true,
    "tagOnCreate": true,
    "tagUpdatable": false,
    "cloudFormationSystemTags": true,
    "tagProperty": "/properties/Tags"
  },
  "$defs": {
    "S3": {
      "type": "object",
      "title": "AWSMSKClusterS3Definition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        },
        "Prefix": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "Bucket": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "BrokerLogs": {
      "type": "object",
      "title": "AWSMSKClusterBrokerLogsDefinition",
      "properties": {
        "S3": {
          "$ref": "#/$defs/S3"
        },
        "CloudWatchLogs": {
          "$ref": "#/$defs/CloudWatchLogs"
        },
        "Firehose": {
          "$ref": "#/$defs/Firehose"
        }
      },
      "additionalProperties": false
    },
    "NodeExporter": {
      "type": "object",
      "title": "AWSMSKClusterNodeExporterDefinition",
      "properties": {
        "EnabledInBroker": {
          "type": "boolean"
        }
      },
      "required": [
        "EnabledInBroker"
      ],
      "additionalProperties": false
    },
    "EncryptionInfo": {
      "type": "object",
      "title": "AWSMSKClusterEncryptionInfoDefinition",
      "properties": {
        "EncryptionAtRest": {
          "$ref": "#/$defs/EncryptionAtRest"
        },
        "EncryptionInTransit": {
          "$ref": "#/$defs/EncryptionInTransit"
        }
      },
      "additionalProperties": false
    },
    "Firehose": {
      "type": "object",
      "title": "AWSMSKClusterFirehoseDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        },
        "DeliveryStream": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "OpenMonitoring": {
      "type": "object",
      "title": "AWSMSKClusterOpenMonitoringDefinition",
      "properties": {
        "Prometheus": {
          "$ref": "#/$defs/Prometheus"
        }
      },
      "required": [
        "Prometheus"
      ],
      "additionalProperties": false
    },
    "Prometheus": {
      "type": "object",
      "title": "AWSMSKClusterPrometheusDefinition",
      "properties": {
        "JmxExporter": {
          "$ref": "#/$defs/JmxExporter"
        },
        "NodeExporter": {
          "$ref": "#/$defs/NodeExporter"
        }
      },
      "additionalProperties": false
    },
    "CloudWatchLogs": {
      "type": "object",
      "title": "AWSMSKClusterCloudWatchLogsDefinition",
      "properties": {
        "LogGroup": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "EBSStorageInfo": {
      "type": "object",
      "title": "AWSMSKClusterEBSStorageInfoDefinition",
      "properties": {
        "VolumeSize": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16384
        },
        "ProvisionedThroughput": {
          "$ref": "#/$defs/ProvisionedThroughput"
        }
      },
      "additionalProperties": false
    },
    "ProvisionedThroughput": {
      "type": "object",
      "title": "AWSMSKClusterProvisionedThroughputDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        },
        "VolumeThroughput": {
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "PublicAccess": {
      "type": "object",
      "title": "AWSMSKClusterPublicAccessDefinition",
      "properties": {
        "Type": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 7,
              "maxLength": 23
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "VpcConnectivity": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivityDefinition",
      "properties": {
        "ClientAuthentication": {
          "$ref": "#/$defs/VpcConnectivityClientAuthentication"
        }
      },
      "additionalProperties": false
    },
    "ConfigurationInfo": {
      "type": "object",
      "title": "AWSMSKClusterConfigurationInfoDefinition",
      "properties": {
        "Revision": {
          "type": "integer"
        },
        "Arn": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "Revision",
        "Arn"
      ],
      "additionalProperties": false
    },
    "BrokerNodeGroupInfo": {
      "type": "object",
      "title": "AWSMSKClusterBrokerNodeGroupInfoDefinition",
      "properties": {
        "StorageInfo": {
          "$ref": "#/$defs/StorageInfo"
        },
        "ConnectivityInfo": {
          "$ref": "#/$defs/ConnectivityInfo"
        },
        "SecurityGroups": {
          "type": "array",
          "uniqueItems": false,
          "insertionOrder": false,
          "items": {
            "type": "string"
          }
        },
        "BrokerAZDistribution": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 6,
              "maxLength": 9
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        },
        "ClientSubnets": {
          "type": "array",
          "uniqueItems": false,
          "insertionOrder": false,
          "items": {
            "type": "string"
          }
        },
        "InstanceType": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 5,
              "maxLength": 32
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "ClientSubnets",
        "InstanceType"
      ],
      "additionalProperties": false
    },
    "EncryptionAtRest": {
      "type": "object",
      "title": "AWSMSKClusterEncryptionAtRestDefinition",
      "properties": {
        "DataVolumeKMSKeyId": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "required": [
        "DataVolumeKMSKeyId"
      ],
      "additionalProperties": false
    },
    "JmxExporter": {
      "type": "object",
      "title": "AWSMSKClusterJmxExporterDefinition",
      "properties": {
        "EnabledInBroker": {
          "type": "boolean"
        }
      },
      "required": [
        "EnabledInBroker"
      ],
      "additionalProperties": false
    },
    "StorageInfo": {
      "type": "object",
      "title": "AWSMSKClusterStorageInfoDefinition",
      "properties": {
        "EBSStorageInfo": {
          "$ref": "#/$defs/EBSStorageInfo"
        }
      },
      "additionalProperties": false
    },
    "ConnectivityInfo": {
      "type": "object",
      "title": "AWSMSKClusterConnectivityInfoDefinition",
      "properties": {
        "PublicAccess": {
          "$ref": "#/$defs/PublicAccess"
        },
        "VpcConnectivity": {
          "$ref": "#/$defs/VpcConnectivity"
        }
      },
      "additionalProperties": false
    },
    "VpcConnectivityTls": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivityTlsDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "VpcConnectivitySasl": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivitySaslDefinition",
      "properties": {
        "Scram": {
          "$ref": "#/$defs/VpcConnectivityScram"
        },
        "Iam": {
          "$ref": "#/$defs/VpcConnectivityIam"
        }
      },
      "additionalProperties": false
    },
    "VpcConnectivityScram": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivityScramDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "VpcConnectivityIam": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivityIamDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "Tls": {
      "type": "object",
      "title": "AWSMSKClusterTlsDefinition",
      "properties": {
        "CertificateAuthorityArnList": {
          "type": "array",
          "uniqueItems": false,
          "insertionOrder": false,
          "items": {
            "type": "string"
          }
        },
        "Enabled": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "Sasl": {
      "type": "object",
      "title": "AWSMSKClusterSaslDefinition",
      "properties": {
        "Scram": {
          "$ref": "#/$defs/Scram"
        },
        "Iam": {
          "$ref": "#/$defs/Iam"
        }
      },
      "additionalProperties": false
    },
    "Scram": {
      "type": "object",
      "title": "AWSMSKClusterScramDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "Iam": {
      "type": "object",
      "title": "AWSMSKClusterIamDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "Unauthenticated": {
      "type": "object",
      "title": "AWSMSKClusterUnauthenticatedDefinition",
      "properties": {
        "Enabled": {
          "type": "boolean"
        }
      },
      "required": [
        "Enabled"
      ],
      "additionalProperties": false
    },
    "ClientAuthentication": {
      "type": "object",
      "title": "AWSMSKClusterClientAuthenticationDefinition",
      "properties": {
        "Tls": {
          "$ref": "#/$defs/Tls"
        },
        "Sasl": {
          "$ref": "#/$defs/Sasl"
        },
        "Unauthenticated": {
          "$ref": "#/$defs/Unauthenticated"
        }
      },
      "additionalProperties": false
    },
    "VpcConnectivityClientAuthentication": {
      "type": "object",
      "title": "AWSMSKClusterVpcConnectivityClientAuthenticationDefinition",
      "properties": {
        "Tls": {
          "$ref": "#/$defs/VpcConnectivityTls"
        },
        "Sasl": {
          "$ref": "#/$defs/VpcConnectivitySasl"
        }
      },
      "additionalProperties": false
    },
    "LoggingInfo": {
      "type": "object",
      "title": "AWSMSKClusterLoggingInfoDefinition",
      "properties": {
        "BrokerLogs": {
          "$ref": "#/$defs/BrokerLogs"
        }
      },
      "required": [
        "BrokerLogs"
      ],
      "additionalProperties": false
    },
    "EncryptionInTransit": {
      "type": "object",
      "title": "AWSMSKClusterEncryptionInTransitDefinition",
      "properties": {
        "InCluster": {
          "type": "boolean"
        },
        "ClientBroker": {
          "oneOf": [
            {
              "type": "string",
              "enum": [
                "TLS",
                "TLS_PLAINTEXT",
                "PLAINTEXT"
              ]
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "readOnlyProperties": [
    "/properties/Arn"
  ],
  "additionalProperties": false,
  "required": [
    "BrokerNodeGroupInfo",
    "KafkaVersion",
    "NumberOfBrokerNodes",
    "ClusterName"
  ],
  "createOnlyProperties": [
    "/properties/BrokerNodeGroupInfo/BrokerAZDistribution",
    "/properties/BrokerNodeGroupInfo/ClientSubnets",
    "/properties/BrokerNodeGroupInfo/SecurityGroups",
    "/properties/EncryptionInfo/EncryptionAtRest",
    "/properties/EncryptionInfo/EncryptionInTransit/InCluster",
    "/properties/ClusterName",
    "/properties/Tags"
  ],
  "primaryIdentifier": [
    "/properties/Arn"
  ]
}
