{
  "properties": {
    "spec": {
      "additionalProperties": false,
      "properties": {
        "filteredOperations": {
          "description": "An optional list of filtered operations to test",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "oAuth2Context": {
          "additionalProperties": false,
          "description": "The OAuth2 context to use for this test",
          "properties": {
            "clientId": {
              "description": "The OAuth2 client ID",
              "type": [
                "string",
                "null"
              ]
            },
            "clientIdFrom": {
              "additionalProperties": false,
              "description": "A reference to a namespace Kubernetes Secret to get the OAuth2 client ID value from",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "clientSecret": {
              "description": "The OAuth2 client Secret",
              "type": [
                "string",
                "null"
              ]
            },
            "clientSecretFrom": {
              "additionalProperties": false,
              "description": "A reference to a namespace Kubernetes Secret to get the OAuth2 client Secret value from",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "grantType": {
              "description": "The OAuth Grant Type flow to apply for getting the token",
              "type": [
                "string",
                "null"
              ]
            },
            "password": {
              "description": "Optional. The password to use for the OAuth2 client",
              "type": [
                "string",
                "null"
              ]
            },
            "passwordFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the password to use for the OAuth2 client",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "refreshToken": {
              "description": "Optional. The refreshToken to use for obtaining a new OAuth2 token",
              "type": [
                "string",
                "null"
              ]
            },
            "refreshTokenFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the refreshToken to use for obtaining a new OAuth2 token",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "scopes": {
              "description": "Optional. The OAuth2 scopes to use for negotiating the token",
              "type": [
                "string",
                "null"
              ]
            },
            "tokenUri": {
              "description": "The IDP URI where to get the OAuth2 token",
              "type": [
                "string",
                "null"
              ]
            },
            "username": {
              "description": "Optional. The username to use for the OAuth2 client",
              "type": [
                "string",
                "null"
              ]
            },
            "usernameFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the username to use for the OAuth2 client",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "oauth2Context": {
          "additionalProperties": false,
          "properties": {
            "clientId": {
              "description": "The OAuth2 client ID",
              "type": [
                "string",
                "null"
              ]
            },
            "clientIdFrom": {
              "additionalProperties": false,
              "description": "A reference to a namespace Kubernetes Secret to get the OAuth2 client ID value from",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "clientSecret": {
              "description": "The OAuth2 client Secret",
              "type": [
                "string",
                "null"
              ]
            },
            "clientSecretFrom": {
              "additionalProperties": false,
              "description": "A reference to a namespace Kubernetes Secret to get the OAuth2 client Secret value from",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "grantType": {
              "description": "The OAuth Grant Type flow to apply for getting the token",
              "type": [
                "string",
                "null"
              ]
            },
            "password": {
              "description": "Optional. The password to use for the OAuth2 client",
              "type": [
                "string",
                "null"
              ]
            },
            "passwordFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the password to use for the OAuth2 client",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "refreshToken": {
              "description": "Optional. The refreshToken to use for obtaining a new OAuth2 token",
              "type": [
                "string",
                "null"
              ]
            },
            "refreshTokenFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the refreshToken to use for obtaining a new OAuth2 token",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "scopes": {
              "description": "Optional. The OAuth2 scopes to use for negotiating the token",
              "type": [
                "string",
                "null"
              ]
            },
            "tokenUri": {
              "description": "The IDP URI where to get the OAuth2 token",
              "type": [
                "string",
                "null"
              ]
            },
            "username": {
              "description": "Optional. The username to use for the OAuth2 client",
              "type": [
                "string",
                "null"
              ]
            },
            "usernameFrom": {
              "additionalProperties": false,
              "description": "Optional. A reference to a a namespace Kubernetes Secret to get the username to use for the OAuth2 client",
              "properties": {
                "secretKey": {
                  "description": "The key in referenced Secret to get the value from",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "description": "The name of a namespace Kubernetes Secret to get value from",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "operationsHeaders": {
          "additionalProperties": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "description": "An optional 2-levels map of headers to set for each operation",
          "type": [
            "object",
            "null"
          ]
        },
        "retentionPolicy": {
          "description": "The retention policy to use for this Test resource in Kubernetes. Default is Retain.",
          "enum": [
            "Delete",
            "DeleteOnSuccess",
            "Retain"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "runnerType": {
          "description": "The runner to use for this test",
          "type": [
            "string",
            "null"
          ]
        },
        "secretRef": {
          "description": "Reference to a Secret for accessing the test endpoint",
          "type": [
            "string",
            "null"
          ]
        },
        "serviceId": {
          "description": "The API/Service identifier to test",
          "type": [
            "string",
            "null"
          ]
        },
        "testEndpoint": {
          "description": "The implementation endpoint of API/Service to test",
          "type": [
            "string",
            "null"
          ]
        },
        "timeout": {
          "description": "The timeout to use for this test in milliseconds. Default is 5000.",
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "description": "Test unique identifier once launched in Microcks",
          "type": [
            "string",
            "null"
          ]
        },
        "message": {
          "type": [
            "string",
            "null"
          ]
        },
        "observedGeneration": {
          "description": "Reconciled generation",
          "type": [
            "integer",
            "null"
          ]
        },
        "result": {
          "description": "Result of the test in Microcks",
          "enum": [
            "FAILURE",
            "IN_PROGRESS",
            "SUCCESS"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "status": {
          "description": "Global status of the reconciliation",
          "enum": [
            "DEPLOYING",
            "ERROR",
            "PREEXISTING",
            "READY",
            "UNKNOWN"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "description": "URL to get access the test result in Microcks UI",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}