{
  "properties": {
    "spec": {
      "properties": {
        "authParameter": {
          "oneOf": [
            {
              "required": [
                "basicAuth"
              ]
            },
            {
              "required": [
                "keyAuth"
              ]
            },
            {
              "required": [
                "wolfRBAC"
              ]
            },
            {
              "required": [
                "jwtAuth"
              ]
            },
            {
              "required": [
                "hmacAuth"
              ]
            }
          ],
          "properties": {
            "basicAuth": {
              "oneOf": [
                {
                  "required": [
                    "value"
                  ]
                },
                {
                  "required": [
                    "secretRef"
                  ]
                }
              ],
              "properties": {
                "secretRef": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "value": {
                  "properties": {
                    "password": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "username": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "username",
                    "password"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "hmacAuth": {
              "oneOf": [
                {
                  "required": [
                    "value"
                  ]
                },
                {
                  "required": [
                    "secretRef"
                  ]
                }
              ],
              "properties": {
                "secretRef": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "value": {
                  "properties": {
                    "access_key": {
                      "type": "string"
                    },
                    "algorithm": {
                      "type": "string"
                    },
                    "clock_skew": {
                      "type": "integer"
                    },
                    "encode_uri_params": {
                      "type": "boolean"
                    },
                    "keep_headers": {
                      "type": "boolean"
                    },
                    "max_req_body": {
                      "type": "integer"
                    },
                    "secret_key": {
                      "type": "string"
                    },
                    "signed_headers": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "validate_request_body": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "access_key",
                    "secret_key"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "jwtAuth": {
              "oneOf": [
                {
                  "required": [
                    "value"
                  ]
                },
                {
                  "required": [
                    "secretRef"
                  ]
                }
              ],
              "properties": {
                "secretRef": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "value": {
                  "properties": {
                    "algorithm": {
                      "type": "string"
                    },
                    "base64_secret": {
                      "type": "boolean"
                    },
                    "exp": {
                      "type": "integer"
                    },
                    "key": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "private_key": {
                      "type": "string"
                    },
                    "public_key": {
                      "type": "string"
                    },
                    "secret": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "keyAuth": {
              "oneOf": [
                {
                  "required": [
                    "value"
                  ]
                },
                {
                  "required": [
                    "secretRef"
                  ]
                }
              ],
              "properties": {
                "secretRef": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "value": {
                  "properties": {
                    "key": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "key"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "wolfRBAC": {
              "oneOf": [
                {
                  "required": [
                    "value"
                  ]
                },
                {
                  "required": [
                    "secretRef"
                  ]
                }
              ],
              "properties": {
                "secretRef": {
                  "properties": {
                    "name": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "value": {
                  "properties": {
                    "appid": {
                      "type": "string"
                    },
                    "header_prefix": {
                      "type": "string"
                    },
                    "server": {
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "authParameter"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
