{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cloudera/main/json-schema/cloudera-create-azure-datalake-request-schema.json",
  "title": "CreateAzureDatalakeRequest",
  "description": "Request object for create Azure datalake request.",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cloudera-datalake-api-openapi.yml#/components/schemas/CreateAzureDatalakeRequest",
  "type": "object",
  "required": [
    "datalakeName",
    "environmentName",
    "cloudProviderConfiguration"
  ],
  "properties": {
    "datalakeName": {
      "type": "string",
      "description": "The datalake name. This name must be unique, must have between 5 and 40 characters, and must contain only lowercase letters, numbers and hyphens. Names are case-sensitive.",
      "minLength": 5,
      "maxLength": 40
    },
    "environmentName": {
      "type": "string",
      "description": "The environment name or CRN."
    },
    "cloudProviderConfiguration": {
      "$ref": "#/$defs/AzureConfigurationRequest",
      "description": "Azure 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."
    },
    "loadBalancerSku": {
      "description": "The SKU for the datalake load balancer. Allowed values are \"BASIC\", \"STANDARD\", or \"NONE\".",
      "$ref": "#/$defs/DatalakeLoadBalancerSkuType"
    },
    "enableRangerRaz": {
      "type": "boolean",
      "description": "Whether to enable Ranger RAZ for the datalake. Defaults to not being enabled."
    },
    "databaseType": {
      "type": "string",
      "description": "The type of the azure database. FLEXIBLE_SERVER is the next generation managed PostgreSQL service in Azure that provides maximum flexibility over your database, built-in cost-optimizations. SINGLE_SERVER is a fully managed database service with minimal requirements for customizations of the database.",
      "enum": [
        "FLEXIBLE_SERVER",
        "SINGLE_SERVER"
      ]
    },
    "flexibleServerDelegatedSubnetId": {
      "type": "string",
      "description": "This argument allows you to specify the subnet ID for the subnet within which you want to configure your Azure Flexible Server."
    },
    "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."
    },
    "multiAz": {
      "type": "boolean",
      "default": false,
      "description": "Creates CDP datalake distributed across multiple availability zones in an Azure region."
    }
  },
  "$defs": {
    "AzureConfigurationRequest": {
      "type": "object",
      "description": "Request object for Azure configuration.",
      "required": [
        "managedIdentity",
        "storageLocation"
      ],
      "properties": {
        "managedIdentity": {
          "type": "string",
          "description": "The managed identity to use. The assumer should have Virtual Machine Contributor and Managed Identity Operator roles on subscription level."
        },
        "storageLocation": {
          "type": "string",
          "description": "The storage location to use. The location has to be in the following format abfs://filesystem@storage-account-name.dfs.core.windows.net. The filesystem must already exist and the storage account must be StorageV2."
        }
      }
    },
    "DatalakeLoadBalancerSkuType": {
      "type": "string",
      "description": "Represents the Azure load balancer SKU type. The current default is BASIC. To disable the load balancer, use type NONE.",
      "enum": [
        "BASIC",
        "STANDARD",
        "NONE"
      ]
    },
    "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."
        }
      }
    }
  }
}