{
  "properties": {
    "spec": {
      "description": "Configuration affecting VMs onboarded into the mesh. See more details at: https://istio.io/docs/reference/config/networking/workload-entry.html",
      "properties": {
        "address": {
          "description": "Address associated with the network endpoint without the port.",
          "maxLength": 256,
          "type": "string",
          "x_kubernetes_validations": [
            {
              "message": "UDS must be an absolute path or abstract socket",
              "rule": "self.startsWith('unix://') ? (self.substring(7,8) == '/' || self.substring(7,8) == '@') : true"
            },
            {
              "message": "UDS may not be a dir",
              "rule": "self.startsWith('unix://') ? !self.endsWith('/') : true"
            }
          ]
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "One or more labels associated with the endpoint.",
          "maxProperties": 256,
          "type": "object"
        },
        "locality": {
          "description": "The locality associated with the endpoint.",
          "maxLength": 2048,
          "type": "string"
        },
        "network": {
          "description": "Network enables Istio to group endpoints resident in the same L3 domain/network.",
          "maxLength": 2048,
          "type": "string"
        },
        "ports": {
          "additionalProperties": {
            "type": "integer",
            "maximum": 4294967295,
            "minimum": 0,
            "x-kubernetes-validations": [
              {
                "rule": "0 < self && self <= 65535",
                "message": "port must be between 1-65535"
              }
            ]
          },
          "description": "Set of ports associated with the endpoint.",
          "maxProperties": 128,
          "type": "object",
          "x_kubernetes_validations": [
            {
              "message": "port name must be valid",
              "rule": "self.all(key, size(key) < 63 && key.matches('^[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?$'))"
            }
          ]
        },
        "serviceAccount": {
          "description": "The service account associated with the workload if a sidecar is present in the workload.",
          "maxLength": 253,
          "type": "string"
        },
        "weight": {
          "description": "The load balancing weight associated with the endpoint.",
          "maximum": 4294967295,
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object",
      "x_kubernetes_validations": [
        {
          "message": "Address is required",
          "rule": "has(self.address) || has(self.network)"
        },
        {
          "message": "UDS may not include ports",
          "rule": "(has(self.address) && self.address.startsWith('unix://')) ? !has(self.ports) : true"
        }
      ]
    },
    "status": {
      "properties": {
        "conditions": {
          "description": "Current service state of the resource.",
          "items": {
            "type": "object",
            "properties": {
              "lastProbeTime": {
                "description": "Last time we probed the condition.",
                "type": "string",
                "format": "date-time"
              },
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string",
                "format": "date-time"
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": "string"
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status is the status of the condition.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            }
          },
          "type": "array"
        },
        "observedGeneration": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            }
          ],
          "description": "Resource Generation to which the Reconciled Condition refers.",
          "x_kubernetes_int_or_string": true
        },
        "validationMessages": {
          "description": "Includes any errors or warnings detected by Istio's analyzers.",
          "items": {
            "type": "object",
            "properties": {
              "documentationUrl": {
                "description": "A url pointing to the Istio documentation for this specific error type.",
                "type": "string"
              },
              "level": {
                "description": "Represents how severe a message is.\n\nValid Options: UNKNOWN, ERROR, WARNING, INFO",
                "type": "string",
                "enum": [
                  "UNKNOWN",
                  "ERROR",
                  "WARNING",
                  "INFO"
                ]
              },
              "type": {
                "type": "object",
                "properties": {
                  "code": {
                    "description": "A 7 character code matching `^IST[0-9]{4}$` intended to uniquely identify the message type.",
                    "type": "string"
                  },
                  "name": {
                    "description": "A human-readable name for the message type.",
                    "type": "string"
                  }
                }
              }
            }
          },
          "type": "array"
        }
      },
      "type": "object",
      "x_kubernetes_preserve_unknown_fields": true
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}