{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/cloudera/main/json-schema/cloudera-create-deployment-request-schema.json",
  "title": "CreateDeploymentRequest",
  "description": "Request object to create a deployment.",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cloudera-cdflocalrpcapiversion1-api-openapi.yml#/components/schemas/CreateDeploymentRequest",
  "type": "object",
  "x-workload": true,
  "x-client-only": true,
  "required": [
    "environmentCrn",
    "configurationVersion",
    "deploymentRequestCrn",
    "name"
  ],
  "properties": {
    "environmentCrn": {
      "type": "string",
      "description": "The CRN of an environment to execute the command."
    },
    "configurationVersion": {
      "type": "integer",
      "format": "int32",
      "description": "The version of this configuration."
    },
    "name": {
      "type": "string",
      "description": "The name of the deployment."
    },
    "deploymentRequestCrn": {
      "type": "string",
      "description": "The CRN of the deployment request."
    },
    "parameterGroups": {
      "type": "array",
      "description": "The list of flow parameter groups.",
      "items": {
        "$ref": "#/$defs/FlowParameterGroup"
      }
    },
    "autoScalingEnabled": {
      "type": "boolean",
      "description": "Specifies that auto-scaling should be enabled."
    },
    "flowMetricsScalingEnabled": {
      "type": "boolean",
      "description": "Specifies that Flow metrics should be enabled for scaling."
    },
    "autoScaleMinNodes": {
      "type": "integer",
      "format": "int32",
      "description": "The minimum number of nodes that the cluster should allocate. May only be specified when autoScalingEnabled is true."
    },
    "autoScaleMaxNodes": {
      "type": "integer",
      "format": "int32",
      "description": "The maximum number of nodes that the cluster should scale to. May only be specified when autoScalingEnabled is true."
    },
    "staticNodeCount": {
      "type": "integer",
      "format": "int32",
      "description": "The static number of nodes that the cluster should allocate. May only be specified when autoScalingEnabled is false."
    },
    "kpis": {
      "type": "array",
      "description": "The list of configured KPIs.",
      "items": {
        "$ref": "#/$defs/ConfiguredKpi"
      }
    },
    "deployedFlowName": {
      "type": "string",
      "description": "The name of the deployed flow."
    },
    "cfmNifiVersion": {
      "type": "string",
      "description": "The CFM NiFi version associated with the deployment."
    },
    "autoStartFlow": {
      "type": "boolean",
      "description": "Indicates whether or not the flow should be started during deployment creation."
    },
    "clusterSize": {
      "description": "The size of the cluster to deploy.",
      "$ref": "#/$defs/BasicClusterSize"
    },
    "inboundHostname": {
      "type": "string",
      "description": "The FQDN of inbound hostname or just the prefix part."
    },
    "listenComponents": {
      "type": "array",
      "description": "Listen components port and protocol data.",
      "items": {
        "$ref": "#/$defs/ListenComponent"
      }
    },
    "inboundConnectionAuthorizedIpRanges": {
      "type": "array",
      "description": "Set of authorized CIDR ranges for the inbound connections.",
      "uniqueItems": true,
      "items": {
        "type": "string"
      }
    },
    "nodeStorageProfileName": {
      "type": "string",
      "description": "The node storage profile name.",
      "enum": [
        "STANDARD_AWS",
        "STANDARD_AZURE",
        "TEST_SESSION_AWS",
        "TEST_SESSION_AZURE",
        "PERFORMANCE_AWS",
        "PERFORMANCE_AZURE",
        "LOCAL_K8S",
        "CUSTOM_AWS",
        "CUSTOM_AZURE"
      ]
    },
    "nodeStorage": {
      "description": "The node storage data.",
      "$ref": "#/$defs/NodeStorage"
    },
    "pythonWorkDirectorySize": {
      "type": "integer",
      "format": "int32",
      "description": "The size of the extra volume mounted for flows containing python."
    },
    "ignoreDeploymentInboundConfigurationChecks": {
      "type": "boolean",
      "description": "When specified, ignore the check to validate if deployment has inbound connection configured for all listen components."
    },
    "customNarConfigurationCrn": {
      "type": "string",
      "description": "The CRN of the custom NAR configuration."
    },
    "customPythonConfigurationCrn": {
      "type": "string",
      "description": "The CRN of the custom Python configuration."
    },
    "projectCrn": {
      "type": "string",
      "description": "The CRN of the project."
    },
    "useSharedParameterGroupCrn": {
      "type": "string",
      "description": "The CRN of the shared group to use. All parameters of the flow should be present in the provided shared parameter group."
    }
  },
  "$defs": {
    "AWSNodeStorageProfile": {
      "type": "object",
      "description": "Custom AWS node storage parameters.",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "repoSize": {
          "type": "integer",
          "format": "int32",
          "description": "The size of the repository in GB."
        },
        "iops": {
          "type": "string",
          "description": "The IOPS of the repository."
        },
        "throughput": {
          "type": "string",
          "description": "The throughput of the repository."
        }
      }
    },
    "AlertFrequencyUnit": {
      "type": "object",
      "description": "The alert frequency unit to use in KPI tolerances and metrics",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "id",
        "label"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "The id of the frequency unit",
          "enum": [
            "SECONDS",
            "MINUTES",
            "HOURS",
            "DAYS"
          ]
        },
        "label": {
          "type": "string",
          "description": "The user-friendly label of the frequency unit"
        },
        "abbreviation": {
          "type": "string",
          "description": "The abbreviation for frequency unit"
        }
      }
    },
    "AssetReference": {
      "type": "object",
      "description": "A reference to an asset used in a flow parameter",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the asset"
        },
        "name": {
          "type": "string",
          "description": "The name of the asset"
        },
        "path": {
          "type": "string",
          "description": "The path of the asset"
        },
        "version": {
          "type": "string",
          "description": "The version of the asset"
        },
        "environmentProvided": {
          "type": "boolean",
          "description": "Whether or not the asset is provided automatically by the environment. If true, the asset cannot removed or replaced."
        }
      }
    },
    "BasicClusterSize": {
      "type": "object",
      "description": "Cluster scaling parameters.",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of this Cluster Size.",
          "enum": [
            "EXTRA_SMALL",
            "SMALL",
            "MEDIUM",
            "LARGE",
            "CUSTOM"
          ]
        },
        "coresPerNode": {
          "type": "number",
          "format": "double",
          "description": "The number of CPU Cores per node (will be truncated to the nearest integer)."
        },
        "memoryLimit": {
          "type": "number",
          "format": "double",
          "description": "The memory limit (will be truncated to the nearest integer)."
        }
      }
    },
    "ConfiguredAlert": {
      "type": "object",
      "description": "An alert configuration that specifies a configured frequency with lower and/or upper thresholds",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "thresholdMoreThan": {
          "description": "The optional moreThan threshold that should trigger an alert; at least one of thresholdMoreThan and thresholdLessThan is required",
          "$ref": "#/$defs/ConfiguredAlertThreshold"
        },
        "thresholdLessThan": {
          "description": "The optional lessThan threshold that should trigger an alert",
          "$ref": "#/$defs/ConfiguredAlertThreshold"
        },
        "frequencyTolerance": {
          "description": "The configured alert frequency tolerance for the KPI",
          "$ref": "#/$defs/ConfiguredAlertFrequencyTolerance"
        }
      }
    },
    "ConfiguredAlertFrequencyTolerance": {
      "type": "object",
      "description": "An alert configuration frequency tolerance for measuring an amount of time and unit for alert triggering",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "unit",
        "value"
      ],
      "properties": {
        "unit": {
          "description": "The unit of time controlling how long a metric value can persist outside its boundaries before an alert is generated",
          "$ref": "#/$defs/AlertFrequencyUnit"
        },
        "value": {
          "type": "number",
          "format": "double",
          "description": "The amount of time, associated with the given unit, a metric value can persist outside its boundaries before an alert is generated"
        }
      }
    },
    "ConfiguredAlertThreshold": {
      "type": "object",
      "description": "A configured alert threshold to pair together a statistical unit and value",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "unitId",
        "value"
      ],
      "properties": {
        "unitId": {
          "type": "string",
          "description": "The identifier of the alert threshold unit to associate with the given threshold value"
        },
        "value": {
          "type": "number",
          "format": "double",
          "description": "The threshold value whose triggering causes an alert"
        }
      }
    },
    "ConfiguredKpi": {
      "type": "object",
      "description": "An instantiated KPI specifying a metric on which to alert",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "metricId"
      ],
      "properties": {
        "metricId": {
          "type": "string",
          "description": "The id of the associated metric"
        },
        "id": {
          "type": "string",
          "description": "The id of the KPI; used only when viewing and editing existing KPIs"
        },
        "metricComponentType": {
          "type": "string",
          "description": "The component type of the associated metric",
          "enum": [
            "SYSTEM",
            "NIFI_FLOW",
            "NIFI_PROCESSOR",
            "NIFI_PROCESS_GROUP",
            "NIFI_CONNECTION"
          ]
        },
        "alert": {
          "description": "The alert specification for the associated metric",
          "$ref": "#/$defs/ConfiguredAlert"
        },
        "componentId": {
          "type": "string",
          "description": "The optional process group ID, processor ID, or connection ID. This is a composite ID containing a chain of process group IDs representing the component's full ancestry"
        }
      }
    },
    "FlowParameter": {
      "type": "object",
      "description": "A flow parameter",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the parameter"
        },
        "description": {
          "type": "string",
          "description": "The description of the param"
        },
        "value": {
          "type": "string",
          "description": "The value of the parameter",
          "x-no-paramfile": true
        },
        "sensitive": {
          "type": "boolean",
          "description": "Whether or not the parameter value is sensitive"
        },
        "type": {
          "type": "string",
          "description": "The type of parameter. Possibly TEXT, FILE, FILES",
          "enum": [
            "TEXT",
            "FILE",
            "FILES"
          ]
        },
        "assetReferences": {
          "type": "array",
          "description": "The list of referenced assets.",
          "items": {
            "$ref": "#/$defs/AssetReference"
          }
        },
        "valueSet": {
          "type": "boolean",
          "description": "Indicates if the value of this parameter is set (i.e. not null)",
          "readOnly": true
        },
        "sourceParameterGroupId": {
          "type": "string",
          "description": "The ID of the shared parameter group where the value should come from."
        }
      }
    },
    "FlowParameterGroup": {
      "type": "object",
      "description": "A flow parameter group",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the parameter group"
        },
        "parameters": {
          "type": "array",
          "description": "The parameters in the group",
          "items": {
            "$ref": "#/$defs/FlowParameter"
          }
        },
        "inheritedParameterGroups": {
          "type": "array",
          "description": "The names and versions of the inherited parameter groups",
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/VersionedParameterGroupReference"
          }
        },
        "otherName": {
          "type": "string",
          "description": "The other name that can be used to reference this group in a flow. This is used when multiple flows with same parameter group are deployed in to same NiFi cluster."
        }
      }
    },
    "ListenComponent": {
      "type": "object",
      "description": "Provides subset of metadata of a Listen* component",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "protocol"
      ],
      "properties": {
        "protocol": {
          "type": "string",
          "description": "Inbound protocol.",
          "enum": [
            "TCP",
            "UDP"
          ]
        },
        "listenComponentType": {
          "type": "string",
          "description": "Listen component type",
          "readOnly": true,
          "enum": [
            "ListenHTTP",
            "ListenFTP",
            "ListenSyslog",
            "ListenRELP",
            "ListenTCP",
            "ListenUDP",
            "ListenTCPRecord",
            "ListenUDPRecord",
            "ListenGRPC",
            "ListenSMTP",
            "ListenBeats",
            "ListenLumberjack",
            "ListenWebSocket",
            "HandleHttpRequest"
          ]
        },
        "port": {
          "type": "string",
          "description": "Inbound port."
        }
      }
    },
    "NodeStorage": {
      "type": "object",
      "description": "Node storage parameters.",
      "x-workload": true,
      "x-client-only": true,
      "properties": {
        "azureContentRepoProfile": {
          "type": "string",
          "description": "The Azure content repository profile.",
          "enum": [
            "AZURE_P6",
            "AZURE_P10",
            "AZURE_P15",
            "AZURE_P30"
          ]
        },
        "azureProvenanceRepoProfile": {
          "type": "string",
          "description": "The Azure provenance repository profile.",
          "enum": [
            "AZURE_P6",
            "AZURE_P10",
            "AZURE_P15",
            "AZURE_P30"
          ]
        },
        "azureFlowFileRepoProfile": {
          "type": "string",
          "description": "The Azure flow file repository profile.",
          "enum": [
            "AZURE_P6",
            "AZURE_P10",
            "AZURE_P15",
            "AZURE_P30"
          ]
        },
        "awsContentRepoProfile": {
          "description": "The AWS content repository profile.",
          "$ref": "#/$defs/AWSNodeStorageProfile"
        },
        "awsProvenanceRepoProfile": {
          "description": "The AWS provenance repository profile.",
          "$ref": "#/$defs/AWSNodeStorageProfile"
        },
        "awsFlowFileRepoProfile": {
          "description": "The AWS flow file repository profile.",
          "$ref": "#/$defs/AWSNodeStorageProfile"
        }
      }
    },
    "VersionedParameterGroupReference": {
      "type": "object",
      "description": "A reference to a specific version of a shared parameter group",
      "x-workload": true,
      "x-client-only": true,
      "required": [
        "groupId"
      ],
      "properties": {
        "groupId": {
          "type": "string",
          "description": "The ID of the parameter group"
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "The version of the parameter group. Empty or null means the latest version."
        }
      }
    }
  }
}