{
  "description": "ServiceImport describes a service imported from clusters in a ClusterSet.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "spec defines the behavior of a ServiceImport.",
      "properties": {
        "ips": {
          "description": "ip will be used as the VIP for this service when type is ClusterSetIP.",
          "items": {
            "type": "string"
          },
          "maxItems": 1,
          "type": "array"
        },
        "ports": {
          "items": {
            "description": "ServicePort represents the port on which the service is exposed",
            "properties": {
              "appProtocol": {
                "description": "The application protocol for this port.\nThis field follows standard Kubernetes label syntax.\nUn-prefixed names are reserved for IANA standard service names (as per\nRFC-6335 and http://www.iana.org/assignments/service-names).\nNon-standard protocols should use prefixed names such as\nmycompany.com/my-custom-protocol.\nField can be enabled with ServiceAppProtocol feature gate.",
                "type": "string"
              },
              "name": {
                "description": "The name of this port within the service. This must be a DNS_LABEL.\nAll ports within a ServiceSpec must have unique names. When considering\nthe endpoints for a Service, this must match the 'name' field in the\nEndpointPort.\nOptional if only one ServicePort is defined on this service.",
                "type": "string"
              },
              "port": {
                "description": "The port that will be exposed by this service.",
                "format": "int32",
                "type": "integer"
              },
              "protocol": {
                "description": "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\".\nDefault is TCP.",
                "type": "string"
              }
            },
            "required": [
              "port"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-type": "atomic"
        },
        "sessionAffinity": {
          "description": "Supports \"ClientIP\" and \"None\". Used to maintain session affinity.\nEnable client IP based session affinity.\nMust be ClientIP or None.\nDefaults to None.\nIgnored when type is Headless\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies",
          "type": "string"
        },
        "sessionAffinityConfig": {
          "description": "sessionAffinityConfig contains session affinity configuration.",
          "properties": {
            "clientIP": {
              "description": "clientIP contains the configurations of Client IP based session affinity.",
              "properties": {
                "timeoutSeconds": {
                  "description": "timeoutSeconds specifies the seconds of ClientIP type session sticky time.\nThe value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\".\nDefault value is 10800(for 3 hours).",
                  "format": "int32",
                  "type": "integer"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "type": {
          "description": "type defines the type of this service.\nMust be ClusterSetIP or Headless.",
          "enum": [
            "ClusterSetIP",
            "Headless"
          ],
          "type": "string"
        }
      },
      "required": [
        "ports",
        "type"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "status contains information about the exported services that form\nthe multi-cluster service referenced by this ServiceImport.",
      "properties": {
        "clusters": {
          "description": "clusters is the list of exporting clusters from which this service\nwas derived.",
          "items": {
            "description": "ClusterStatus contains service configuration mapped to a specific source cluster",
            "properties": {
              "cluster": {
                "description": "cluster is the name of the exporting cluster. Must be a valid RFC-1123 DNS\nlabel.",
                "type": "string"
              }
            },
            "required": [
              "cluster"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-map-keys": [
            "cluster"
          ],
          "x-kubernetes-list-type": "map"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
