{
  "description": "TestSuite is the Schema for the testsuites API",
  "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/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "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/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "TestSuiteSpec defines the desired state of TestSuite",
      "properties": {
        "after": {
          "description": "After steps is list of tests which will be sequentially orchestrated",
          "items": {
            "additionalProperties": false,
            "description": "TestSuiteStepSpec will of particular type will have config for possible step types",
            "properties": {
              "delay": {
                "additionalProperties": false,
                "description": "TestSuiteStepDelay contains step delay parameters",
                "properties": {
                  "duration": {
                    "description": "Duration in ms",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "execute": {
                "additionalProperties": false,
                "description": "TestSuiteStepExecute defines step to be executed",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "namespace": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "stopOnFailure": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "before": {
          "description": "Before steps is list of tests which will be sequentially orchestrated",
          "items": {
            "additionalProperties": false,
            "description": "TestSuiteStepSpec will of particular type will have config for possible step types",
            "properties": {
              "delay": {
                "additionalProperties": false,
                "description": "TestSuiteStepDelay contains step delay parameters",
                "properties": {
                  "duration": {
                    "description": "Duration in ms",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "execute": {
                "additionalProperties": false,
                "description": "TestSuiteStepExecute defines step to be executed",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "namespace": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "stopOnFailure": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "description": {
          "type": [
            "string",
            "null"
          ]
        },
        "params": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "DEPRECATED execution params passed to executor",
          "type": [
            "object",
            "null"
          ]
        },
        "repeats": {
          "type": [
            "integer",
            "null"
          ]
        },
        "schedule": {
          "description": "schedule in cron job format for scheduled test execution",
          "type": [
            "string",
            "null"
          ]
        },
        "steps": {
          "description": "Steps is list of tests which will be sequentially orchestrated",
          "items": {
            "additionalProperties": false,
            "description": "TestSuiteStepSpec will of particular type will have config for possible step types",
            "properties": {
              "delay": {
                "additionalProperties": false,
                "description": "TestSuiteStepDelay contains step delay parameters",
                "properties": {
                  "duration": {
                    "description": "Duration in ms",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "execute": {
                "additionalProperties": false,
                "description": "TestSuiteStepExecute defines step to be executed",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "namespace": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "stopOnFailure": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "variables": {
          "additionalProperties": {
            "additionalProperties": false,
            "properties": {
              "name": {
                "description": "variable name",
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "description": "variable type",
                "type": [
                  "string",
                  "null"
                ]
              },
              "value": {
                "description": "variable string value",
                "type": [
                  "string",
                  "null"
                ]
              },
              "valueFrom": {
                "additionalProperties": false,
                "description": "or load it from var source",
                "properties": {
                  "configMapKeyRef": {
                    "additionalProperties": false,
                    "description": "Selects a key of a ConfigMap.",
                    "properties": {
                      "key": {
                        "description": "The key to select.",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the ConfigMap or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "fieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`, spec.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"
                    ]
                  },
                  "resourceFieldRef": {
                    "additionalProperties": false,
                    "description": "Selects a resource of the container: only resources limits and requests (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"
                    ]
                  },
                  "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": {
                        "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "optional": {
                        "description": "Specify whether the Secret or its key must be defined",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "key"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "description": "Variables are new params with secrets attached",
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "description": "TestSuiteStatus defines the observed state of TestSuite",
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}