{
  "description": "JobSink triggers long-running jobs when an event occur.",
  "type": "object",
  "properties": {
    "spec": {
      "description": "Spec defines the desired state of the JobSink.",
      "type": "object",
      "properties": {
        "job": {
          "type": "object",
          "description": "Full Job resource object, see https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#job-v1-batch for more details.",
          "x-kubernetes-preserve-unknown-fields": true
        }
      },
      "additionalProperties": false
    },
    "status": {
      "description": "Status represents the current state of the JobSink. This data may be out of date.",
      "type": "object",
      "properties": {
        "address": {
          "description": "JobSink is Addressable. It exposes the endpoint as an URI to schedule long running jobs when an even occurs.",
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "CACerts": {
              "type": "string"
            },
            "audience": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "addresses": {
          "description": "JobSink is Addressable. It exposes the endpoint as an URI to schedule long running jobs when an even occurs.",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "CACerts": {
                "type": "string"
              },
              "audience": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "job": {
          "type": "object",
          "properties": {
            "selector": {
              "type": "string",
              "description": "Label selector for all scheduled jobs"
            }
          },
          "additionalProperties": false
        },
        "annotations": {
          "description": "Annotations is additional Status fields for the Resource to save some additional State as well as convey more information to the user. This is roughly akin to Annotations on any k8s resource, just the reconciler conveying richer information outwards.",
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "policies": {
          "description": "List of applied EventPolicies",
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "apiVersion": {
                "description": "The API version of the applied EventPolicy. This indicates, which version of EventPolicy is supported by the resource.",
                "type": "string"
              },
              "name": {
                "description": "The name of the applied EventPolicy",
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "conditions": {
          "description": "Conditions the latest available observations of a resource's current state.",
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "type",
              "status"
            ],
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another. We use VolatileTime in place of metav1.Time to exclude this from creating equality.Semantic differences (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. When 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
          }
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the 'Generation' of the Service that was last processed by the controller.",
          "type": "integer",
          "format": "int64"
        }
      },
      "additionalProperties": false
    }
  }
}
