{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cloudera/main/json-schema/cloudera-create-awsgov-cloud-datalake-request-schema.json",
  "title": "CreateAWSGovCloudDatalakeRequest",
  "description": "Request object for createing AWS Data Lake request on GovCloud.",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cloudera-datalake-api-openapi.yml#/components/schemas/CreateAWSGovCloudDatalakeRequest",
  "type": "object",
  "required": [
    "datalakeName",
    "environmentName",
    "cloudProviderConfiguration"
  ],
  "properties": {
    "datalakeName": {
      "type": "string",
      "description": "The Data Lake name. This name must be unique, must have between 5 and 100 characters, and must contain only lowercase letters, numbers and hyphens. Names are case-sensitive.",
      "minLength": 5,
      "maxLength": 100
    },
    "environmentName": {
      "type": "string",
      "description": "The environment name or CRN."
    },
    "cloudProviderConfiguration": {
      "$ref": "#/$defs/AWSConfigurationRequest",
      "description": "AWS configuration."
    },
    "scale": {
      "description": "The scale of the datalake. Allowed values are \"LIGHT_DUTY\" or \"MEDIUM_DUTY_HA\". Defaults to \"LIGHT_DUTY\" if not set.",
      "$ref": "#/$defs/DatalakeScaleType",
      "x-no-compatibility-guarantee": true
    },
    "tags": {
      "type": "array",
      "description": "Tags to be added to Data Lake related resources.",
      "items": {
        "$ref": "#/$defs/DatalakeResourceTagRequest"
      }
    },
    "runtime": {
      "type": "string",
      "description": "Cloudera Runtime version."
    },
    "image": {
      "$ref": "#/$defs/ImageRequest",
      "description": "The image to use for the datalake. This must not be set if the runtime parameter is provided."
    },
    "enableRangerRaz": {
      "type": "boolean",
      "description": "Whether to enable Ranger RAZ for the datalake. Defaults to not being enabled."
    },
    "multiAz": {
      "type": "boolean",
      "description": "Controls if the datalake is deployed in a multi-availability zone way."
    },
    "recipes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/InstanceGroupRecipeRequest"
      },
      "description": "Additional recipes that will be attached on the datalake instances (by instance groups, most common ones are like 'master' or 'idbroker')."
    },
    "customInstanceGroups": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/SdxInstanceGroupRequest"
      },
      "description": "Configure custom properties on an instance group level."
    },
    "javaVersion": {
      "type": "integer",
      "format": "int32",
      "description": "Configure the major version of Java on the cluster."
    }
  },
  "$defs": {
    "AWSConfigurationRequest": {
      "type": "object",
      "description": "Request object for AWS configuration.",
      "required": [
        "instanceProfile",
        "storageBucketLocation"
      ],
      "properties": {
        "instanceProfile": {
          "type": "string",
          "description": "The ARN of an IAM instance profile."
        },
        "storageBucketLocation": {
          "type": "string",
          "description": "The location of the S3 bucket to be used as storage. The location has to start with s3a:// followed by the bucket name."
        }
      }
    },
    "DatalakeResourceTagRequest": {
      "type": "object",
      "description": "Tag for a datalake resource.",
      "required": [
        "key",
        "value"
      ],
      "properties": {
        "key": {
          "type": "string",
          "description": "The key of tag."
        },
        "value": {
          "type": "string",
          "description": "The value of the tag."
        }
      }
    },
    "DatalakeScaleType": {
      "type": "string",
      "description": "Represents the available datalake scales. Defaults to LIGHT_DUTY if not set.",
      "enum": [
        "LIGHT_DUTY",
        "MEDIUM_DUTY_HA",
        "ENTERPRISE"
      ]
    },
    "ImageRequest": {
      "description": "The image request for the datalake. When the 'runtime' parameter is set, only the 'os' parameter can be provided. Otherwise, you can use 'catalog name' and/or 'id' for selecting an image.",
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The image ID from the catalog. The corresponding image will be used for the created cluster machines."
        },
        "catalogName": {
          "type": "string",
          "description": "The name of the custom image catalog to use, defaulting to 'cdp-default' if not present.",
          "default": "cdp-default"
        },
        "os": {
          "type": "string",
          "description": "The OS of the image used for cluster instances."
        }
      }
    },
    "InstanceGroupRecipeRequest": {
      "type": "object",
      "description": "Represents an instance group - recipe pair (by names) request.",
      "required": [
        "instanceGroupName"
      ],
      "properties": {
        "instanceGroupName": {
          "type": "string",
          "description": "A valid instance/host group name. This name must be unique."
        },
        "recipeNames": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "type": "string"
          },
          "description": "Names of the recipes (empty is valid)."
        }
      }
    },
    "SdxInstanceGroupRequest": {
      "description": "Request object for host group level custom configurations.",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the instance group."
        },
        "instanceType": {
          "type": "string",
          "description": "Cloud provider instance type to create instances with."
        }
      }
    }
  }
}