{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/cloudera/main/json-schema/cloudera-create-gcpenvironment-request-schema.json", "title": "CreateGCPEnvironmentRequest", "description": "Request object for a create GCP environment request.", "x-generated": "2026-10-04", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/cloudera-environments2-api-openapi.yml#/components/schemas/CreateGCPEnvironmentRequest", "type": "object", "required": [ "environmentName", "credentialName", "region", "publicKey", "usePublicIp", "existingNetworkParams" ], "properties": { "environmentName": { "type": "string", "description": "The name of the environment. Must contain only lowercase letters, numbers and hyphens." }, "credentialName": { "type": "string", "description": "Name of the credential to use for the environment." }, "region": { "type": "string", "description": "The region of the environment." }, "publicKey": { "type": "string", "description": "Public SSH key string. The associated private key can be used to get root-level access to the Data Lake instance and Data Hub cluster instances." }, "usePublicIp": { "type": "boolean", "description": "Whether to associate public ip's to the resources within the network." }, "existingNetworkParams": { "description": "Parameters needed to use an existing VPC and Subnets. For now only existing network params is supported.", "$ref": "#/$defs/ExistingGCPNetworkRequest" }, "securityAccess": { "description": "Firewall rules for FreeIPA, Data Lake and Data Hub deployment.", "$ref": "#/$defs/GcpSecurityAccessRequest" }, "logStorage": { "description": "GCP storage configuration for cluster and audit logs.", "$ref": "#/$defs/GcpLogStorageRequest" }, "description": { "type": "string", "description": "A description of the environment." }, "enableTunnel": { "type": "boolean", "default": true, "description": "Whether to enable SSH tunneling for the environment." }, "workloadAnalytics": { "type": "boolean", "description": "When this is enabled, diagnostic information about job and query execution is sent to Workload Manager for Data Hub clusters created within this environment." }, "freeIpa": { "$ref": "#/$defs/GCPFreeIpaCreationRequest", "description": "The FreeIPA creation request for the environment" }, "endpointAccessGatewayScheme": { "type": "string", "description": "The scheme for the endpoint gateway. PUBLIC creates an external endpoint that can be accessed over the Internet. Defaults to PRIVATE which restricts the traffic to be internal to the VPC.", "enum": [ "PUBLIC", "PRIVATE" ] }, "endpointAccessGatewaySubnetIds": { "type": "array", "items": { "type": "string" }, "description": "The subnets to use for endpoint access gateway." }, "tags": { "type": "array", "description": "Tags that can be attached to GCP resources. Please refer to Google documentation for the rules https://cloud.google.com/compute/docs/labeling-resources#label_format.", "items": { "$ref": "#/$defs/GcpTagRequest" } }, "proxyConfigName": { "type": "string", "description": "Name of the proxy config to use for the environment." }, "encryptionKey": { "type": "string", "description": "Key Resource ID of the customer managed encryption key to encrypt GCP resources." }, "availabilityZones": { "description": "The zones of the environment in the given region. Multi-zone selection is not supported in GCP yet. It accepts only one zone until support is added.", "type": "array", "items": { "type": "string" } }, "customDockerRegistry": { "description": "Configures the desired custom docker registry for data services.", "$ref": "#/$defs/CustomDockerRegistryRequest" }, "environmentType": { "description": "Environment type which can be hybrid or public cloud.", "type": "string", "enum": [ "PUBLIC_CLOUD", "HYBRID" ] } }, "$defs": { "CustomDockerRegistryRequest": { "description": "The desired custom docker registry for data services to be used.", "type": "object", "required": [ "crn" ], "properties": { "crn": { "type": "string", "description": "The CRN of the desired custom docker registry for data services to be used." } } }, "ExistingGCPNetworkRequest": { "type": "object", "description": "Request object for creating an GCP environment using existing VPC and subnets.", "required": [ "networkName", "subnetNames" ], "properties": { "networkName": { "type": "string", "description": "The name of the GCP VPC." }, "subnetNames": { "type": "array", "description": "One or more subnet names within the VPC. Google VPC's are global, please give subnets from single geographic region only to reduce latency.", "uniqueItems": true, "items": { "type": "string" } }, "sharedProjectId": { "type": "string", "description": "The ID of the Google project associated with the VPC." } } }, "GCPFreeIpaCreationRequest": { "description": "Request object for creating FreeIPA in the environment.", "type": "object", "properties": { "instanceCountByGroup": { "type": "integer", "format": "int32", "description": "The number of FreeIPA instances to create per group when creating FreeIPA in the environment" }, "recipes": { "type": "array", "items": { "type": "string" }, "description": "The recipes for the FreeIPA cluster." }, "instanceType": { "type": "string", "description": "Custom instance type of FreeIPA instances." }, "multiAz": { "type": "boolean", "default": false, "description": "Flag that enables deployment of the FreeIPA in a multi-availability zone." } } }, "GcpLogStorageRequest": { "type": "object", "description": "GCP storage configuration for cluster and audit logs.", "required": [ "storageLocationBase", "serviceAccountEmail" ], "properties": { "storageLocationBase": { "type": "string", "description": "The Google storage bucket to use. This should be a gs:// url." }, "serviceAccountEmail": { "type": "string", "description": "Email id of the service account to be associated with the instances. This service account should have \"storage.ObjectCreator\" role on the given storage bucket." }, "backupStorageLocationBase": { "type": "string", "description": "The Google storage bucket to use. This should be a gs:// url." } } }, "GcpSecurityAccessRequest": { "type": "object", "description": "Firewall rules for FreeIPA, Data Lake and Data Hub deployment.", "properties": { "securityGroupIdForKnox": { "type": "string", "minLength": 1, "description": "Firewall rule for Knox hosts." }, "defaultSecurityGroupId": { "type": "string", "minLength": 1, "description": "Firewall rule for other hosts." } } }, "GcpTagRequest": { "description": "A label that can be attached to GCP resources. Please refer to Google documentation for the rules https://cloud.google.com/compute/docs/labeling-resources#label_format.", "type": "object", "required": [ "key", "value" ], "properties": { "key": { "type": "string", "description": "The tag's name." }, "value": { "type": "string", "description": "The associated value of the tag." } } } } }