{
  "description": "TektonChain is the Schema for the tektonchain 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",
        "null"
      ]
    },
    "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",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "TektonChainSpec defines the desired state of TektonChain",
      "properties": {
        "artifacts.oci.format": {
          "description": "oci artifacts config",
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.oci.signer": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.oci.storage": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.pipelinerun.enable-deep-inspection": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.pipelinerun.format": {
          "description": "pipelinerun artifacts config",
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.pipelinerun.signer": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.pipelinerun.storage": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.taskrun.format": {
          "description": "taskrun artifacts config",
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.taskrun.signer": {
          "type": [
            "string",
            "null"
          ]
        },
        "artifacts.taskrun.storage": {
          "type": [
            "string",
            "null"
          ]
        },
        "builddefinition.buildtype": {
          "type": [
            "string",
            "null"
          ]
        },
        "builder.id": {
          "description": "builder config",
          "type": [
            "string",
            "null"
          ]
        },
        "config": {
          "additionalProperties": false,
          "description": "Config holds the configuration for resources created by TektonChain",
          "properties": {
            "nodeSelector": {
              "additionalProperties": {
                "type": "string"
              },
              "type": [
                "object",
                "null"
              ]
            },
            "priorityClassName": {
              "description": "PriorityClassName holds the priority class to be set to pod template",
              "type": [
                "string",
                "null"
              ]
            },
            "tolerations": {
              "items": {
                "additionalProperties": false,
                "description": "The pod this Toleration is attached to tolerates any taint that matches\nthe triple \u003ckey,value,effect\u003e using the matching operator \u003coperator\u003e.",
                "properties": {
                  "effect": {
                    "description": "Effect indicates the taint effect to match. Empty means match all taint effects.\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "key": {
                    "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys.\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "operator": {
                    "description": "Operator represents a key's relationship to the value.\nValid operators are Exists, Equal, Lt, and Gt. Defaults to Equal.\nExists is equivalent to wildcard for value, so that a pod can\ntolerate all taints of a particular category.\nLt and Gt perform numeric comparisons (requires feature gate TaintTolerationComparisonOperators).",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "tolerationSeconds": {
                    "description": "TolerationSeconds represents the period of time the toleration (which must be\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\nit is not set, which means tolerate the taint forever (do not evict). Zero and\nnegative values will be treated as 0 (evict immediately) by the system.",
                    "format": "int64",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "value": {
                    "description": "Value is the taint value the toleration matches to.\nIf the operator is Exists, the value should be empty, otherwise just a regular string.",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "controllerEnvs": {
          "items": {
            "additionalProperties": false,
            "description": "EnvVar represents an environment variable present in a Container.",
            "properties": {
              "name": {
                "description": "Name of the environment variable.\nMay consist of any printable ASCII characters except '='.",
                "type": "string"
              },
              "value": {
                "description": "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\".",
                "type": [
                  "string",
                  "null"
                ]
              },
              "valueFrom": {
                "additionalProperties": false,
                "description": "Source for the environment variable's value. Cannot be used if value is not empty.",
                "properties": {
                  "configMapKeyRef": {
                    "additionalProperties": false,
                    "description": "Selects a key of a ConfigMap.",
                    "properties": {
                      "key": {
                        "description": "The key to select.",
                        "type": "string"
                      },
                      "name": {
                        "default": "",
                        "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the ConfigMap or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "fieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.",
                    "properties": {
                      "apiVersion": {
                        "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "fieldPath": {
                        "description": "Path of the field to select in the specified API version.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "fieldPath"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "fileKeyRef": {
                    "additionalProperties": false,
                    "description": "FileKeyRef selects a key of the env file.\nRequires the EnvFiles feature gate to be enabled.",
                    "properties": {
                      "key": {
                        "description": "The key within the env file. An invalid key will prevent the pod from starting.\nThe keys defined within a source may consist of any printable ASCII characters except '='.\nDuring Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.",
                        "type": "string"
                      },
                      "optional": {
                        "default": false,
                        "description": "Specify whether the file or its key must be defined. If the file or key\ndoes not exist, then the env var is not published.\nIf optional is set to true and the specified key does not exist,\nthe environment variable will not be set in the Pod's containers.\n\nIf optional is set to false and the specified key does not exist,\nan error will be returned during Pod creation.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "path": {
                        "description": "The path within the volume from which to select the file.\nMust be relative and may not contain the '..' path or start with '..'.",
                        "type": "string"
                      },
                      "volumeName": {
                        "description": "The name of the volume mount containing the env file.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "key",
                      "path",
                      "volumeName"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "resourceFieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.",
                    "properties": {
                      "containerName": {
                        "description": "Container name: required for volumes, optional for env vars",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "divisor": {
                        "description": "Specifies the output format of the exposed resources, defaults to \"1\"",
                        "oneOf": [
                          {
                            "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$",
                            "type": "string"
                          },
                          {
                            "type": "integer"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "x-kubernetes-int-or-string": true
                      },
                      "resource": {
                        "description": "Required: resource to select",
                        "type": "string"
                      }
                    },
                    "required": [
                      "resource"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  },
                  "secretKeyRef": {
                    "additionalProperties": false,
                    "description": "Selects a key of a secret in the pod's namespace",
                    "properties": {
                      "key": {
                        "description": "The key of the secret to select from.  Must be a valid secret key.",
                        "type": "string"
                      },
                      "name": {
                        "default": "",
                        "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the Secret or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ],
                    "x-kubernetes-map-type": "atomic"
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "required": [
              "name"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "disabled": {
          "description": "enable or disable chains feature",
          "type": "boolean"
        },
        "generateSigningSecret": {
          "description": "generate signing key",
          "type": [
            "boolean",
            "null"
          ]
        },
        "options": {
          "additionalProperties": false,
          "description": "options holds additions fields and these fields will be updated on the manifests",
          "properties": {
            "configMaps": {
              "x-kubernetes-preserve-unknown-fields": true
            },
            "deployments": {
              "x-kubernetes-preserve-unknown-fields": true
            },
            "disabled": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "horizontalPodAutoscalers": {
              "x-kubernetes-preserve-unknown-fields": true
            },
            "statefulSets": {
              "x-kubernetes-preserve-unknown-fields": true
            },
            "webhookConfigurationOptions": {
              "additionalProperties": {
                "additionalProperties": false,
                "description": "WebhookOptions defines options for webhooks",
                "properties": {
                  "failurePolicy": {
                    "description": "FailurePolicyType specifies a failure policy that defines how unrecognized errors from the admission endpoint are handled.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "sideEffects": {
                    "description": "SideEffectClass specifies the types of side effects a webhook may have.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "timeoutSeconds": {
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": "object"
        },
        "performance": {
          "additionalProperties": false,
          "description": "PerformanceProperties defines the fields which are configurable\nto tune the performance of component controller",
          "properties": {
            "buckets": {
              "type": [
                "integer",
                "null"
              ]
            },
            "disable-ha": {
              "description": "if it is true, disables the HA feature",
              "type": "boolean"
            },
            "kube-api-burst": {
              "type": [
                "integer",
                "null"
              ]
            },
            "kube-api-qps": {
              "description": "queries per second (QPS) and burst to the master from rest API client\nactually the number multiplied by 2\nhttps://github.com/pierretasci/pipeline/blob/05d67e427c722a2a57e58328d7097e21429b7524/cmd/controller/main.go#L85-L87\ndefaults: https://github.com/tektoncd/pipeline/blob/34618964300620dca44d10a595e4af84e9903a55/vendor/k8s.io/client-go/rest/config.go#L45-L46",
              "type": [
                "number",
                "null"
              ]
            },
            "replicas": {
              "format": "int32",
              "type": [
                "integer",
                "null"
              ]
            },
            "statefulset-ordinals": {
              "description": "if is true, enable StatefulsetOrdinals mode",
              "type": [
                "boolean",
                "null"
              ]
            },
            "threads-per-controller": {
              "description": "The number of workers to use when processing the component controller's work queue",
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "required": [
            "disable-ha"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "signers.kms.auth.address": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.oidc.path": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.oidc.role": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.spire.audience": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.spire.sock": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.token": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.auth.token-path": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.kms.kmsref": {
          "description": "kms signer config",
          "type": [
            "string",
            "null"
          ]
        },
        "signers.x509.fulcio.address": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.x509.fulcio.enabled": {
          "description": "x509 signer config",
          "type": [
            "boolean",
            "null"
          ]
        },
        "signers.x509.fulcio.issuer": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.x509.fulcio.provider": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.x509.identity.token.file": {
          "type": [
            "string",
            "null"
          ]
        },
        "signers.x509.tuf.mirror.url": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.docdb.mongo-server-url": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.docdb.mongo-server-url-dir": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.docdb.url": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.gcs.bucket": {
          "description": "storage configs",
          "type": [
            "string",
            "null"
          ]
        },
        "storage.grafeas.notehint": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.grafeas.noteid": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.grafeas.projectid": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.oci.repository": {
          "type": [
            "string",
            "null"
          ]
        },
        "storage.oci.repository.insecure": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "targetNamespace": {
          "description": "TargetNamespace is where resources will be installed",
          "type": [
            "string",
            "null"
          ]
        },
        "transparency.enabled": {
          "type": [
            "string",
            "null"
          ]
        },
        "transparency.url": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "disabled",
        "options"
      ],
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "TektonChainStatus defines the observed state of TektonChain",
      "properties": {
        "annotations": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Annotations is additional Status fields for the Resource to save some\nadditional State as well as convey more information to the user. This is\nroughly akin to Annotations on any k8s resource, just the reconciler conveying\nricher information outwards.",
          "type": [
            "object",
            "null"
          ]
        },
        "conditions": {
          "description": "Conditions the latest available observations of a resource's current state.",
          "items": {
            "additionalProperties": false,
            "description": "Condition defines a readiness condition for a Knative resource.\nSee: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#typical-status-properties",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.\nWe use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic\ndifferences (all other things held constant).",
                "type": [
                  "string",
                  "null"
                ]
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nWhen this is not specified, it defaults to Error.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the 'Generation' of the Service that\nwas last processed by the controller.",
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        },
        "tektonInstallerSet": {
          "description": "The current installer set name for TektonChain",
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "description": "The version of the installed release",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}