{
  "description": "ClusterFilter is the Schema for the clusterfilters API",
  "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",
        "null"
      ]
    },
    "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",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "ClusterFilterSpec defines the desired state of ClusterFilter",
      "properties": {
        "filters": {
          "items": {
            "additionalProperties": false,
            "description": "Filter defines all available filter plugins and their parameters.",
            "properties": {
              "customPlugin": {
                "additionalProperties": false,
                "description": "Custom plugin type",
                "properties": {
                  "config": {
                    "type": "string"
                  }
                },
                "required": [
                  "config"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "grep": {
                "additionalProperties": false,
                "description": "The filter_grep filter plugin",
                "properties": {
                  "and": {
                    "items": {
                      "additionalProperties": false,
                      "description": "And defines the parameters for the \"and\" plugin",
                      "properties": {
                        "exclude": {
                          "additionalProperties": false,
                          "description": "Exclude defines the parameters for the exclude plugin",
                          "properties": {
                            "key": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "pattern": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "regexp": {
                          "additionalProperties": false,
                          "description": "Regexp defines the parameters for the regexp plugin",
                          "properties": {
                            "key": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "pattern": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "exclude": {
                    "items": {
                      "additionalProperties": false,
                      "description": "Exclude defines the parameters for the exclude plugin",
                      "properties": {
                        "key": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "pattern": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "or": {
                    "items": {
                      "additionalProperties": false,
                      "description": "Or defines the parameters for the \"or\" plugin",
                      "properties": {
                        "exclude": {
                          "additionalProperties": false,
                          "description": "Exclude defines the parameters for the exclude plugin",
                          "properties": {
                            "key": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "pattern": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "regexp": {
                          "additionalProperties": false,
                          "description": "Regexp defines the parameters for the regexp plugin",
                          "properties": {
                            "key": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "pattern": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "regexp": {
                    "items": {
                      "additionalProperties": false,
                      "description": "Regexp defines the parameters for the regexp plugin",
                      "properties": {
                        "key": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "pattern": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "logLevel": {
                "description": "The @log_level parameter specifies the plugin-specific logging level",
                "type": [
                  "string",
                  "null"
                ]
              },
              "parser": {
                "additionalProperties": false,
                "description": "The filter_parser filter plugin",
                "properties": {
                  "emitInvalidRecordToError": {
                    "description": "Emits invalid record to @ERROR label. Invalid cases are: key does not exist;the format is not matched;an unexpected error.\nIf you want to ignore these errors, set false.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "hashValueField": {
                    "description": "Stores the parsed values as a hash value in a field.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "injectKeyPrefix": {
                    "description": "Stores the parsed values with the specified key name prefix.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "keyName": {
                    "description": "Specifies the field name in the record to parse. Required parameter.\ni.e: If set keyName to log, {\"key\":\"value\",\"log\":\"{\\\"time\\\":1622473200,\\\"user\\\":1}\"} =\u003e {\"user\":1}",
                    "type": "string"
                  },
                  "parse": {
                    "additionalProperties": false,
                    "description": "Parse defines various parameters for the parse plugin",
                    "properties": {
                      "customPatternPath": {
                        "description": "Path to the file that includes custom grok patterns.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "estimateCurrentEvent": {
                        "description": "If true, use Fluent::Eventnow(current time) as a timestamp when time_key is specified.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "expression": {
                        "description": "Specifies the regular expression for matching logs. Regular expression also supports i and m suffix.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "grok": {
                        "description": "Grok Sections",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "keepTimeKey": {
                              "description": "If true, keep time field in the record.",
                              "type": [
                                "boolean",
                                "null"
                              ]
                            },
                            "name": {
                              "description": "The name of this grok section.",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "pattern": {
                              "description": "The pattern of grok. Required parameter.",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "timeFormat": {
                              "description": "Process value using specified format. This is available only when time_type is string",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "timeKey": {
                              "description": "Specify time field for event time. If the event doesn't have this field, current time is used.",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "timeZone": {
                              "description": "Use specified timezone. one can parse/format the time value in the specified timezone.",
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": "object"
                        },
                        "type": [
                          "array",
                          "null"
                        ]
                      },
                      "grokFailureKey": {
                        "description": "The key has grok failure reason.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "grokPattern": {
                        "description": "The pattern of grok.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "grokPatternSeries": {
                        "description": "Specify grok pattern series set.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "id": {
                        "description": "The @id parameter specifies a unique name for the configuration.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "keepTimeKey": {
                        "description": "If true, keep time field in th record.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "localtime": {
                        "description": "If true, uses local time.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "logLevel": {
                        "description": "The @log_level parameter specifies the plugin-specific logging level",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "multiLineStartRegexp": {
                        "description": "The regexp to match beginning of multiline. This is only for \"multiline_grok\".",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeFormat": {
                        "description": "Process value according to the specified format. This is available only when time_type is string",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeFormatFallbacks": {
                        "description": "Uses the specified time format as a fallback in the specified order. You can parse undetermined time format by using time_format_fallbacks. This options is enabled when time_type is mixed.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeKey": {
                        "description": "Specify time field for event time. If the event doesn't have this field, current time is used.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeType": {
                        "description": "parses/formats value according to this type, default is string",
                        "enum": [
                          "float",
                          "unixtime",
                          "string",
                          "mixed"
                        ],
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeout": {
                        "description": "Specify timeout for parse processing.",
                        "pattern": "^\\d+(\\.[0-9]{0,2})?(s|m|h|d)?$",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timezone": {
                        "description": "Uses the specified timezone.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "type": {
                        "description": "The @type parameter specifies the type of the plugin.",
                        "enum": [
                          "regexp",
                          "apache2",
                          "apache_error",
                          "nginx",
                          "syslog",
                          "csv",
                          "tsv",
                          "ltsv",
                          "json",
                          "multiline",
                          "none",
                          "grok",
                          "multiline_grok"
                        ],
                        "type": "string"
                      },
                      "types": {
                        "description": "Specify types for converting field into another, i.e: types user_id:integer,paid:bool,paid_usd_amount:float",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "utc": {
                        "description": "If true, uses UTC.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  },
                  "removeKeyNameField": {
                    "description": "Removes key_name field when parsing is succeeded.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "replaceInvalidSequence": {
                    "description": "If true, invalid string is replaced with safe characters and re-parse it.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "reserveData": {
                    "description": "Keeps the original key-value pair in the parsed result. Default is false.\ni.e: If set keyName to log, reverseData to true,\n{\"key\":\"value\",\"log\":\"{\\\"user\\\":1,\\\"num\\\":2}\"} =\u003e {\"key\":\"value\",\"log\":\"{\\\"user\\\":1,\\\"num\\\":2}\",\"user\":1,\"num\":2}",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "reserveTime": {
                    "description": "Keeps the original event time in the parsed result. Default is false.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  }
                },
                "required": [
                  "keyName",
                  "parse"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "recordTransformer": {
                "additionalProperties": false,
                "description": "The filter_record_transformer filter plugin",
                "properties": {
                  "autoTypecast": {
                    "description": "Automatically casts the field types. Default is false.\nThis option is effective only for field values comprised of a single placeholder.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "enableRuby": {
                    "description": "When set to true, the full Ruby syntax is enabled in the ${...} expression. The default value is false.\ni.e: jsonized_record ${record.to_json}",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "keepKeys": {
                    "description": "A list of keys to keep. Only relevant if renew_record is set to true.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "records": {
                    "items": {
                      "additionalProperties": false,
                      "description": "The parameters inside \u003crecord\u003e directives are considered to be new key-value pairs",
                      "properties": {
                        "key": {
                          "description": "New field can be defined as key",
                          "type": "string"
                        },
                        "value": {
                          "description": "The value must from Record properties.\nSee https://docs.fluentd.org/filter/record_transformer#less-than-record-greater-than-directive",
                          "type": "string"
                        }
                      },
                      "required": [
                        "key",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "removeKeys": {
                    "description": "A list of keys to delete. Supports nested field via record_accessor syntax since v1.1.0.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "renewRecord": {
                    "description": "By default, the record transformer filter mutates the incoming data. However, if this parameter is set to true, it modifies a new empty hash instead.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "renewTimeKey": {
                    "description": "renew_time_key foo overwrites the time of events with a value of the record field foo if exists. The value of foo must be a Unix timestamp.",
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "stdout": {
                "additionalProperties": false,
                "description": "The filter_stdout filter plugin",
                "properties": {
                  "format": {
                    "additionalProperties": false,
                    "description": "The format section",
                    "properties": {
                      "delimiter": {
                        "description": "Delimiter for each field.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "id": {
                        "description": "The @id parameter specifies a unique name for the configuration.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "localtime": {
                        "description": "If true, uses local time.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "logLevel": {
                        "description": "The @log_level parameter specifies the plugin-specific logging level",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "newline": {
                        "description": "Specify newline characters.",
                        "enum": [
                          "lf",
                          "crlf"
                        ],
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "outputTag": {
                        "description": "Output tag field if true.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "outputTime": {
                        "description": "Output time field if true.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      },
                      "timeFormat": {
                        "description": "Process value according to the specified format. This is available only when time_type is string",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeFormatFallbacks": {
                        "description": "Uses the specified time format as a fallback in the specified order. You can parse undetermined time format by using time_format_fallbacks. This options is enabled when time_type is mixed.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeType": {
                        "description": "parses/formats value according to this type, default is string",
                        "enum": [
                          "float",
                          "unixtime",
                          "string",
                          "mixed"
                        ],
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timezone": {
                        "description": "Uses the specified timezone.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "type": {
                        "description": "The @type parameter specifies the type of the plugin.",
                        "enum": [
                          "out_file",
                          "json",
                          "ltsv",
                          "csv",
                          "msgpack",
                          "hash",
                          "single_value"
                        ],
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "utc": {
                        "description": "If true, uses UTC.",
                        "type": [
                          "boolean",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "inject": {
                    "additionalProperties": false,
                    "description": "The inject section",
                    "properties": {
                      "hostname": {
                        "description": "Hostname value",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "hostnameKey": {
                        "description": "The field name to inject hostname",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "inline": {
                        "additionalProperties": false,
                        "description": "Time section",
                        "properties": {
                          "localtime": {
                            "description": "If true, uses local time.",
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "timeFormat": {
                            "description": "Process value according to the specified format. This is available only when time_type is string",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "timeFormatFallbacks": {
                            "description": "Uses the specified time format as a fallback in the specified order. You can parse undetermined time format by using time_format_fallbacks. This options is enabled when time_type is mixed.",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "timeType": {
                            "description": "parses/formats value according to this type, default is string",
                            "enum": [
                              "float",
                              "unixtime",
                              "string",
                              "mixed"
                            ],
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "timezone": {
                            "description": "Uses the specified timezone.",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "utc": {
                            "description": "If true, uses UTC.",
                            "type": [
                              "boolean",
                              "null"
                            ]
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "tagKey": {
                        "description": "The field name to inject tag",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "timeKey": {
                        "description": "The field name to inject time",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "workerIdKey": {
                        "description": "The field name to inject worker_id",
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "type": [
                  "object",
                  "null"
                ]
              },
              "tag": {
                "description": "Which tag to be matched.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "description": "ClusterFilterStatus defines the observed state of ClusterFilter",
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}