{
  "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/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/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "location": {
          "description": "Immutable. The location for the resource",
          "type": "string"
        },
        "projectRef": {
          "description": "Immutable. The Project that this resource belongs to.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The project for the resource\n\nAllowed value: The Google Cloud resource name of a `Project` resource (format: `projects/{{name}}`).",
              "type": "string"
            },
            "name": {
              "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "resourceID": {
          "description": "Immutable. Optional. The name of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.",
          "type": "string"
        },
        "spec": {
          "description": "Optional. Hub-wide Feature configuration. If this Feature does not support any Hub-wide configuration, this field may be unused.",
          "properties": {
            "fleetobservability": {
              "description": "Fleet Observability spec.",
              "properties": {
                "loggingConfig": {
                  "description": "Fleet Observability Logging-specific spec.",
                  "properties": {
                    "defaultConfig": {
                      "description": "Specified if applying the default routing config to logs not specified in other configs.",
                      "properties": {
                        "mode": {
                          "description": "The logs routing mode Possible values: MODE_UNSPECIFIED, COPY, MOVE",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "fleetScopeLogsConfig": {
                      "description": "Specified if applying the routing config to all logs for all fleet scopes.",
                      "properties": {
                        "mode": {
                          "description": "The logs routing mode Possible values: MODE_UNSPECIFIED, COPY, MOVE",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "multiclusteringress": {
              "description": "Multicluster Ingress-specific spec.",
              "properties": {
                "configMembershipRef": {
                  "oneOf": [
                    {
                      "not": {
                        "required": [
                          "external"
                        ]
                      },
                      "required": [
                        "name"
                      ]
                    },
                    {
                      "not": {
                        "anyOf": [
                          {
                            "required": [
                              "name"
                            ]
                          },
                          {
                            "required": [
                              "namespace"
                            ]
                          }
                        ]
                      },
                      "required": [
                        "external"
                      ]
                    }
                  ],
                  "properties": {
                    "external": {
                      "description": "Fully-qualified Membership name which hosts the MultiClusterIngress CRD. Example: `projects/foo-proj/locations/global/memberships/bar`\n\nAllowed value: The Google Cloud resource name of a `GKEHubMembership` resource (format: `projects/{{project}}/locations/{{location}}/memberships/{{name}}`).",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "required": [
                "configMembershipRef"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "location",
        "projectRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observation of the resource's current state.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string"
              },
              "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. Can be True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "createTime": {
          "description": "Output only. When the Feature resource was created.",
          "format": "date-time",
          "type": "string"
        },
        "deleteTime": {
          "description": "Output only. When the Feature resource was deleted.",
          "format": "date-time",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.",
          "type": "integer"
        },
        "resourceState": {
          "description": "State of the Feature resource itself.",
          "properties": {
            "hasResources": {
              "description": "Whether this Feature has outstanding resources that need to be cleaned up before it can be disabled.",
              "type": "boolean"
            },
            "state": {
              "description": "The current state of the Feature resource in the Hub API. Possible values: STATE_UNSPECIFIED, ENABLING, ACTIVE, DISABLING, UPDATING, SERVICE_UPDATING",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "state": {
          "description": "Output only. The Hub-wide Feature state",
          "properties": {
            "state": {
              "description": "Output only. The \"running state\" of the Feature in this Hub.",
              "properties": {
                "code": {
                  "description": "The high-level, machine-readable status of this Feature. Possible values: CODE_UNSPECIFIED, OK, WARNING, ERROR",
                  "type": "string"
                },
                "description": {
                  "description": "A human-readable description of the current status.",
                  "type": "string"
                },
                "updateTime": {
                  "description": "The time this status and any related Feature-specific details were updated. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\"",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "updateTime": {
          "description": "Output only. When the Feature resource was last updated.",
          "format": "date-time",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
