{
  "description": "Certificate is responsible for provisioning a SSL certificate for the\ngiven hosts. It is a Knative abstraction for various SSL certificate\nprovisioning solutions (such as cert-manager or self-signed SSL certificate).",
  "type": "object",
  "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 is the desired state of the Certificate.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
      "type": "object",
      "required": [
        "dnsNames",
        "secretName"
      ],
      "properties": {
        "dnsNames": {
          "description": "DNSNames is a list of DNS names the Certificate could support.\nThe wildcard format of DNSNames (e.g. *.default.example.com) is supported.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "domain": {
          "description": "Domain is the top level domain of the values for DNSNames.",
          "type": "string"
        },
        "secretName": {
          "description": "SecretName is the name of the secret resource to store the SSL certificate in.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "status": {
      "description": "Status is the current state of the Certificate.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
      "type": "object",
      "properties": {
        "annotations": {
          "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",
          "additionalProperties": {
            "type": "string"
          }
        },
        "conditions": {
          "description": "Conditions the latest available observations of a resource's current state.",
          "type": "array",
          "items": {
            "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",
            "type": "object",
            "required": [
              "status",
              "type"
            ],
            "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"
              },
              "message": {
                "description": "A human readable message indicating details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "severity": {
                "description": "Severity with which to treat failures of this type of condition.\nWhen this is not specified, it defaults to Error.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "http01Challenges": {
          "description": "HTTP01Challenges is a list of HTTP01 challenges that need to be fulfilled\nin order to get the TLS certificate..",
          "type": "array",
          "items": {
            "description": "HTTP01Challenge defines the status of a HTTP01 challenge that a certificate needs\nto fulfill.",
            "type": "object",
            "properties": {
              "serviceName": {
                "description": "ServiceName is the name of the service to serve HTTP01 challenge requests.",
                "type": "string"
              },
              "serviceNamespace": {
                "description": "ServiceNamespace is the namespace of the service to serve HTTP01 challenge requests.",
                "type": "string"
              },
              "servicePort": {
                "description": "ServicePort is the port of the service to serve HTTP01 challenge requests.",
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "string"
                  }
                ],
                "x-kubernetes-int-or-string": true
              },
              "url": {
                "description": "URL is the URL that the HTTP01 challenge is expected to serve on.",
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "notAfter": {
          "description": "The expiration time of the TLS certificate stored in the secret named\nby this resource in spec.secretName.",
          "type": "string",
          "format": "date-time"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the 'Generation' of the Service that\nwas last processed by the controller.",
          "type": "integer",
          "format": "int64"
        }
      },
      "additionalProperties": false
    }
  }
}
