{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-search/google-cloud-dataflow/json-schema/google-cloud-dataflow-environment-schema.json",
  "title": "Google Cloud Dataflow Environment",
  "description": "Describes the environment in which a Dataflow job runs, including worker pool configuration, networking, encryption, and runtime settings.",
  "type": "object",
  "properties": {
    "tempStoragePrefix": {
      "type": "string",
      "description": "The prefix of the Cloud Storage path for temporary storage used during job execution."
    },
    "clusterManagerApiService": {
      "type": "string",
      "description": "The type of cluster manager API to use for managing workers."
    },
    "experiments": {
      "type": "array",
      "description": "A list of experiment flags passed to the SDK and Dataflow service for enabling experimental features.",
      "items": {
        "type": "string"
      }
    },
    "serviceOptions": {
      "type": "array",
      "description": "A list of service-level feature flags for the Dataflow service.",
      "items": {
        "type": "string"
      }
    },
    "serviceKmsKeyName": {
      "type": "string",
      "description": "The Cloud KMS key used for encrypting data at rest. Format: projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{key}."
    },
    "workerPools": {
      "type": "array",
      "description": "The worker pool configuration for the job, defining machine type, disk, network, and autoscaling settings.",
      "items": {
        "$ref": "google-cloud-dataflow-worker-pool-schema.json"
      }
    },
    "userAgent": {
      "type": "object",
      "description": "A structure describing the SDK and its version used by the job.",
      "additionalProperties": true
    },
    "version": {
      "type": "object",
      "description": "A structure describing which version of the Dataflow service the job requires.",
      "additionalProperties": true
    },
    "dataset": {
      "type": "string",
      "description": "The BigQuery dataset for workflow logging tables. Format: bigquery.googleapis.com/projects/{project}/datasets/{dataset}."
    },
    "sdkPipelineOptions": {
      "type": "object",
      "description": "The Cloud Dataflow SDK pipeline options specified by the user.",
      "additionalProperties": true
    },
    "serviceAccountEmail": {
      "type": "string",
      "format": "email",
      "description": "The email address of the service account to run the workers as."
    },
    "flexResourceSchedulingGoal": {
      "type": "string",
      "description": "Which Flexible Resource Scheduling mode to run in for Flex RS jobs.",
      "enum": [
        "FLEXRS_UNSPECIFIED",
        "FLEXRS_SPEED_OPTIMIZED",
        "FLEXRS_COST_OPTIMIZED"
      ]
    },
    "workerRegion": {
      "type": "string",
      "description": "The Compute Engine region where workers should be created."
    },
    "workerZone": {
      "type": "string",
      "description": "The specific Compute Engine zone where workers should be created."
    },
    "shuffleMode": {
      "type": "string",
      "description": "The shuffle mode for the job, set by the service.",
      "readOnly": true,
      "enum": [
        "SHUFFLE_MODE_UNSPECIFIED",
        "VM_BASED",
        "SERVICE_BASED"
      ]
    },
    "debugOptions": {
      "type": "object",
      "description": "Debugging options for the job.",
      "properties": {
        "enableHotKeyLogging": {
          "type": "boolean",
          "description": "When true, enables logging of hot key detections during job execution."
        }
      }
    },
    "streamingMode": {
      "type": "string",
      "description": "The streaming mode for the job, specifying the message processing guarantee.",
      "enum": [
        "STREAMING_MODE_UNSPECIFIED",
        "STREAMING_MODE_EXACTLY_ONCE",
        "STREAMING_MODE_AT_LEAST_ONCE"
      ]
    }
  }
}
