{
  "description": "ClusterVectorPipeline is the Schema for the clustervectorpipelines API",
  "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": "VectorPipelineSpec defines the desired state of VectorPipeline",
      "properties": {
        "secret": {
          "additionalProperties": {
            "description": "PipelineSecretBackend declares a named secret backend for a pipeline.",
            "properties": {
              "name": {
                "description": "Name of the Kubernetes Secret. For VectorPipeline it is always resolved\nfrom the pipeline's own namespace.",
                "minLength": 1,
                "type": "string"
              },
              "namespace": {
                "description": "Namespace of the Secret. Required in ClusterVectorPipeline, forbidden in\nVectorPipeline (enforced at reconcile time; the spec type is shared).",
                "type": "string"
              },
              "type": {
                "enum": [
                  "kubernetes_secret"
                ],
                "type": "string"
              }
            },
            "required": [
              "name",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "object",
          "x-kubernetes-validations": [
            {
              "message": "secret backend alias must match ^[A-Za-z0-9_]+$",
              "rule": "self.all(k, k.matches('^[A-Za-z0-9_]+$'))"
            }
          ]
        },
        "sinks": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "sources": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "transforms": {
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "VectorPipelineStatus defines the observed state of VectorPipeline",
      "properties": {
        "LastAppliedPipelineHash": {
          "description": "LastAppliedPipelineHash holds the CRC32 (uint32) hash of the last successfully\napplied pipeline config. It is stored as an int64 because a uint32 can exceed the\nint32 upper bound (2147483647); an int32 field would reject roughly half of all\nhash values and leave the pipeline stuck with configCheckResult=false. See #232.",
          "format": "int64",
          "type": "integer"
        },
        "configCheckResult": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        },
        "relatedSecretsHash": {
          "description": "RelatedSecretsHash holds an int64-folded sha256 over the identities (namespace,\nname, UID, resourceVersion) of every Secret the pipeline's SECRET[] references\nactually use - never over secret data, so the published value cannot fingerprint\nor brute-force secret contents. Any payload change bumps the Secret's\nresourceVersion, so the hash still changes whenever a referenced Secret rotates\neven though the pipeline spec itself did not, letting the reconciler detect that\ndrift. Absent (nil) for pipelines whose config references no secrets.",
          "format": "int64",
          "type": "integer"
        },
        "role": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
