{
  "description": "WorkloadSpec defines the desired state of a Workload.",
  "properties": {
    "controllerRef": {
      "description": "TypedLocalObjectReference allows to reference typed object inside the same namespace.",
      "properties": {
        "apiGroup": {
          "description": "APIGroup is the group for the resource being referenced. If APIGroup is empty, the specified Kind must be in the core API group. For any other third-party types, setting APIGroup is required. It must be a DNS subdomain.",
          "type": [
            "string",
            "null"
          ]
        },
        "kind": {
          "description": "Kind is the type of resource being referenced. It must be a path segment name.",
          "type": "string"
        },
        "name": {
          "description": "Name is the name of resource being referenced. It must be a path segment name.",
          "type": "string"
        }
      },
      "required": [
        "kind",
        "name"
      ],
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": false
    },
    "podGroups": {
      "description": "PodGroups is the list of pod groups that make up the Workload. The maximum number of pod groups is 8. This field is immutable.",
      "items": {
        "description": "PodGroup represents a set of pods with a common scheduling policy.",
        "properties": {
          "name": {
            "description": "Name is a unique identifier for the PodGroup within the Workload. It must be a DNS label. This field is immutable.",
            "type": "string"
          },
          "policy": {
            "description": "PodGroupPolicy defines the scheduling configuration for a PodGroup.",
            "properties": {
              "basic": {
                "description": "BasicSchedulingPolicy indicates that standard Kubernetes scheduling behavior should be used.",
                "type": [
                  "object",
                  "null"
                ]
              },
              "gang": {
                "description": "GangSchedulingPolicy defines the parameters for gang scheduling.",
                "properties": {
                  "minCount": {
                    "description": "MinCount is the minimum number of pods that must be schedulable or scheduled at the same time for the scheduler to admit the entire group. It must be a positive integer.",
                    "format": "int32",
                    "type": "integer"
                  }
                },
                "required": [
                  "minCount"
                ],
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false
              }
            },
            "type": "object",
            "additionalProperties": false
          }
        },
        "required": [
          "name",
          "policy"
        ],
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false
      },
      "type": [
        "array",
        "null"
      ],
      "x-kubernetes-list-map-keys": [
        "name"
      ],
      "x-kubernetes-list-type": "map"
    }
  },
  "required": [
    "podGroups"
  ],
  "type": "object",
  "additionalProperties": false,
  "$schema": "http://json-schema.org/schema#"
}