// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ProtoApiScrubberConfig {
    /// The proto descriptor set for the proto services.
    #[prost(message, optional, tag = "1")]
    pub descriptor_set: ::core::option::Option<DescriptorSet>,
    /// Contains the restrictions for the supported proto elements.
    #[prost(message, optional, tag = "2")]
    pub restrictions: ::core::option::Option<Restrictions>,
    /// Specifies the filtering mode of this filter.
    #[prost(enumeration = "proto_api_scrubber_config::FilteringMode", tag = "3")]
    pub filtering_mode: i32,
}
/// Nested message and enum types in `ProtoApiScrubberConfig`.
pub mod proto_api_scrubber_config {
    /// An enum enlisting all the filtering modes supported by this filter.
    #[derive(
        Clone,
        Copy,
        Debug,
        PartialEq,
        Eq,
        Hash,
        PartialOrd,
        Ord,
        ::prost::Enumeration
    )]
    #[repr(i32)]
    pub enum FilteringMode {
        /// Override the original request/response body with the filtered
        /// request/response body.
        Override = 0,
    }
    impl FilteringMode {
        /// String value of the enum field names used in the ProtoBuf definition.
        ///
        /// The values are not transformed in any way and thus are considered stable
        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
        pub fn as_str_name(&self) -> &'static str {
            match self {
                Self::Override => "OVERRIDE",
            }
        }
        /// Creates an enum from field names used in the ProtoBuf definition.
        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
            match value {
                "OVERRIDE" => Some(Self::Override),
                _ => None,
            }
        }
    }
}
/// Specifies the descriptor set for proto services.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DescriptorSet {
    /// It could be passed by a local file through `Datasource.filename` or
    /// embedded in the `Datasource.inline_bytes`.
    #[prost(message, optional, tag = "1")]
    pub data_source: ::core::option::Option<
        super::super::super::super::super::config::core::v3::DataSource,
    >,
}
/// Contains the restrictions for the methods.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Restrictions {
    /// Specifies the method restrictions.
    /// Key - Fully qualified method name e.g., `endpoints.examples.bookstore.BookStore/GetShelf`.
    /// Value - Method restrictions.
    #[prost(map = "string, message", tag = "1")]
    pub method_restrictions: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        MethodRestrictions,
    >,
}
/// Contains the method restrictions which include the field level restrictions
/// for the request and response fields.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MethodRestrictions {
    /// Restrictions that apply to request fields of the method.
    /// Key - field mask like path of the field eg, foo.bar.baz
    /// Value - Restrictions map containing the mapping from restriction name to
    /// the restriction values.
    #[prost(map = "string, message", tag = "1")]
    pub request_field_restrictions: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        RestrictionConfig,
    >,
    /// Restrictions that apply to response fields of the method.
    /// Key - field mask like path of the field eg, foo.bar.baz
    /// Value - Restrictions map containing the mapping from restriction name to
    /// the restriction values.
    #[prost(map = "string, message", tag = "2")]
    pub response_field_restrictions: ::std::collections::HashMap<
        ::prost::alloc::string::String,
        RestrictionConfig,
    >,
}
/// The restriction configuration.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RestrictionConfig {
    /// Matcher tree for matching requests and responses with the configured restrictions.
    /// NOTE: Currently, only CEL expressions are supported for matching. Support for more
    /// matchers will be added incrementally overtime.
    #[prost(message, optional, tag = "1")]
    pub matcher: ::core::option::Option<
        super::super::super::super::super::super::xds::r#type::matcher::v3::Matcher,
    >,
}
/// Specifies an :ref:`Unified Matcher API <envoy_v3_api_msg_.xds.type.matcher.v3.Matcher>` action to remove a field.
/// This actual action needs to be implemented by the filter using it.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RemoveFieldAction {}
