{
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More 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. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "SecretSyncSpec",
      "properties": {
        "clusterSelector": {
          "description": "Label selector for Clusters. The Clusters that are selected by this will be the ones affected by this SecretSync. It must match the Cluster labels. This field is immutable. Label selector cannot be empty.",
          "properties": {
            "matchExpressions": {
              "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
              "items": {
                "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.",
                "properties": {
                  "key": {
                    "description": "key is the label key that the selector applies to.",
                    "type": "string"
                  },
                  "operator": {
                    "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.",
                    "type": "string"
                  },
                  "values": {
                    "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "key",
                  "operator"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "matchLabels": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
              "type": "object"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "secretRef": {
          "description": "SecretRef specifies the Secret to be bootstrapped to the matched clusters Secret must be in the same namespace of the SecretSync object",
          "properties": {
            "name": {
              "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        },
        "targetNamespace": {
          "description": "TargetNamespace specifies the namespace which the secret should be bootstrapped in The default value is the namespace of the referenced secret",
          "type": "string"
        }
      },
      "required": [
        "clusterSelector",
        "secretRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "SecretSyncStatus secretsync object status",
      "properties": {
        "versions": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "SecretVersions a map contains the ResourceVersion of the secret of each cluster Cluster name is the key and secret's ResourceVersion is the value",
          "type": "object"
        }
      },
      "required": [
        "versions"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
