// @generated
// This file is @generated by prost-build.
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResourceAttributeKey {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub organization_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub description: ::prost::alloc::string::String,
    #[prost(enumeration="ResourceAttributeKeyType", tag="5")]
    pub r#type: i32,
    #[prost(message, optional, tag="6")]
    pub created_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(string, tag="7")]
    pub created_by_user_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="8")]
    pub modified_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(string, tag="9")]
    pub modified_by_user_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="10")]
    pub archived_date: ::core::option::Option<::pbjson_types::Timestamp>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResourceAttributeEnumValue {
    #[prost(string, tag="1")]
    pub resource_attribute_enum_value_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub description: ::prost::alloc::string::String,
    #[prost(message, optional, tag="5")]
    pub created_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(string, tag="6")]
    pub created_by_user_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="7")]
    pub modified_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(string, tag="8")]
    pub modified_by_user_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="9")]
    pub archived_date: ::core::option::Option<::pbjson_types::Timestamp>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResourceAttribute {
    #[prost(string, tag="1")]
    pub resource_attribute_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub organization_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="3")]
    pub entity: ::core::option::Option<ResourceAttributeEntityIdentifier>,
    #[prost(string, tag="4")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="5")]
    pub key: ::core::option::Option<ResourceAttributeKey>,
    #[prost(message, optional, tag="9")]
    pub enum_value_details: ::core::option::Option<ResourceAttributeEnumValue>,
    #[prost(message, optional, tag="10")]
    pub created_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(string, tag="11")]
    pub created_by_user_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag="12")]
    pub archived_date: ::core::option::Option<::pbjson_types::Timestamp>,
    #[prost(oneof="resource_attribute::Value", tags="6, 7, 8")]
    pub value: ::core::option::Option<resource_attribute::Value>,
}
/// Nested message and enum types in `ResourceAttribute`.
pub mod resource_attribute {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(string, tag="6")]
        ResourceAttributeEnumValueId(::prost::alloc::string::String),
        #[prost(bool, tag="7")]
        BooleanValue(bool),
        #[prost(double, tag="8")]
        NumberValue(f64),
    }
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ResourceAttributeEntityIdentifier {
    #[prost(string, tag="1")]
    pub entity_id: ::prost::alloc::string::String,
    #[prost(enumeration="ResourceAttributeEntityType", tag="2")]
    pub entity_type: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeKeyRequest {
    #[prost(string, tag="1")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub description: ::prost::alloc::string::String,
    #[prost(enumeration="ResourceAttributeKeyType", tag="3")]
    pub r#type: i32,
    #[prost(message, repeated, tag="4")]
    pub initial_enum_values: ::prost::alloc::vec::Vec<create_resource_attribute_key_request::InitialEnumValue>,
}
/// Nested message and enum types in `CreateResourceAttributeKeyRequest`.
pub mod create_resource_attribute_key_request {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
    pub struct InitialEnumValue {
        #[prost(string, tag="1")]
        pub display_name: ::prost::alloc::string::String,
        #[prost(string, tag="2")]
        pub description: ::prost::alloc::string::String,
    }
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeKeyResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_key: ::core::option::Option<ResourceAttributeKey>,
    #[prost(message, repeated, tag="2")]
    pub enum_values: ::prost::alloc::vec::Vec<ResourceAttributeEnumValue>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeKeyRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeKeyResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_key: ::core::option::Option<ResourceAttributeKey>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributeKeysRequest {
    #[prost(uint32, tag="1")]
    pub page_size: u32,
    #[prost(string, tag="2")]
    pub page_token: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub filter: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub order_by: ::prost::alloc::string::String,
    #[prost(bool, tag="5")]
    pub include_archived: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributeKeysResponse {
    #[prost(message, repeated, tag="1")]
    pub resource_attribute_keys: ::prost::alloc::vec::Vec<ResourceAttributeKey>,
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateResourceAttributeKeyRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub description: ::prost::alloc::string::String,
    #[prost(message, optional, tag="4")]
    pub update_mask: ::core::option::Option<::pbjson_types::FieldMask>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateResourceAttributeKeyResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_key: ::core::option::Option<ResourceAttributeKey>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeKeyRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeKeyResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeKeyRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeKeyResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributeKeysRequest {
    #[prost(string, repeated, tag="1")]
    pub resource_attribute_key_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributeKeysResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributeKeysRequest {
    #[prost(string, repeated, tag="1")]
    pub resource_attribute_key_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributeKeysResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeEnumValueRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub description: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeEnumValueResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_enum_value: ::core::option::Option<ResourceAttributeEnumValue>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeEnumValueRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_enum_value_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeEnumValueResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_enum_value: ::core::option::Option<ResourceAttributeEnumValue>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributeEnumValuesRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(uint32, tag="2")]
    pub page_size: u32,
    #[prost(string, tag="3")]
    pub page_token: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub filter: ::prost::alloc::string::String,
    #[prost(string, tag="5")]
    pub order_by: ::prost::alloc::string::String,
    #[prost(bool, tag="6")]
    pub include_archived: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributeEnumValuesResponse {
    #[prost(message, repeated, tag="1")]
    pub resource_attribute_enum_values: ::prost::alloc::vec::Vec<ResourceAttributeEnumValue>,
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateResourceAttributeEnumValueRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_enum_value_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub display_name: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub description: ::prost::alloc::string::String,
    #[prost(message, optional, tag="4")]
    pub update_mask: ::core::option::Option<::pbjson_types::FieldMask>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateResourceAttributeEnumValueResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute_enum_value: ::core::option::Option<ResourceAttributeEnumValue>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeEnumValueRequest {
    #[prost(string, tag="1")]
    pub archived_enum_value_id: ::prost::alloc::string::String,
    #[prost(string, tag="2")]
    pub replacement_enum_value_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeEnumValueResponse {
    #[prost(int32, tag="1")]
    pub resource_attributes_migrated: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeEnumValueRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_enum_value_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeEnumValueResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributeEnumValuesRequest {
    #[prost(message, repeated, tag="1")]
    pub archival_requests: ::prost::alloc::vec::Vec<batch_archive_resource_attribute_enum_values_request::EnumValueArchival>,
}
/// Nested message and enum types in `BatchArchiveResourceAttributeEnumValuesRequest`.
pub mod batch_archive_resource_attribute_enum_values_request {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
    pub struct EnumValueArchival {
        #[prost(string, tag="1")]
        pub archived_enum_value_id: ::prost::alloc::string::String,
        #[prost(string, tag="2")]
        pub replacement_enum_value_id: ::prost::alloc::string::String,
    }
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributeEnumValuesResponse {
    #[prost(int32, tag="1")]
    pub total_resource_attributes_migrated: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributeEnumValuesRequest {
    #[prost(string, repeated, tag="1")]
    pub resource_attribute_enum_value_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributeEnumValuesResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeRequest {
    #[prost(message, optional, tag="1")]
    pub entity: ::core::option::Option<ResourceAttributeEntityIdentifier>,
    #[prost(string, tag="2")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(oneof="create_resource_attribute_request::Value", tags="3, 4, 5")]
    pub value: ::core::option::Option<create_resource_attribute_request::Value>,
}
/// Nested message and enum types in `CreateResourceAttributeRequest`.
pub mod create_resource_attribute_request {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(string, tag="3")]
        ResourceAttributeEnumValueId(::prost::alloc::string::String),
        #[prost(bool, tag="4")]
        BooleanValue(bool),
        #[prost(double, tag="5")]
        NumberValue(f64),
    }
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateResourceAttributeResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute: ::core::option::Option<ResourceAttribute>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchCreateResourceAttributesRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_key_id: ::prost::alloc::string::String,
    #[prost(message, repeated, tag="5")]
    pub entities: ::prost::alloc::vec::Vec<ResourceAttributeEntityIdentifier>,
    #[prost(oneof="batch_create_resource_attributes_request::Value", tags="2, 3, 4")]
    pub value: ::core::option::Option<batch_create_resource_attributes_request::Value>,
}
/// Nested message and enum types in `BatchCreateResourceAttributesRequest`.
pub mod batch_create_resource_attributes_request {
    #[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Value {
        #[prost(string, tag="2")]
        ResourceAttributeEnumValueId(::prost::alloc::string::String),
        #[prost(bool, tag="3")]
        BooleanValue(bool),
        #[prost(double, tag="4")]
        NumberValue(f64),
    }
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchCreateResourceAttributesResponse {
    #[prost(message, repeated, tag="1")]
    pub resource_attributes: ::prost::alloc::vec::Vec<ResourceAttribute>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetResourceAttributeResponse {
    #[prost(message, optional, tag="1")]
    pub resource_attribute: ::core::option::Option<ResourceAttribute>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributesRequest {
    #[prost(uint32, tag="1")]
    pub page_size: u32,
    #[prost(string, tag="2")]
    pub page_token: ::prost::alloc::string::String,
    #[prost(string, tag="3")]
    pub filter: ::prost::alloc::string::String,
    #[prost(string, tag="4")]
    pub order_by: ::prost::alloc::string::String,
    #[prost(bool, tag="5")]
    pub include_archived: bool,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributesResponse {
    #[prost(message, repeated, tag="1")]
    pub resource_attributes: ::prost::alloc::vec::Vec<ResourceAttribute>,
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributesByEntityRequest {
    #[prost(message, optional, tag="1")]
    pub entity: ::core::option::Option<ResourceAttributeEntityIdentifier>,
    #[prost(bool, tag="2")]
    pub include_archived: bool,
    #[prost(uint32, tag="3")]
    pub page_size: u32,
    #[prost(string, tag="4")]
    pub page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListResourceAttributesByEntityResponse {
    #[prost(message, repeated, tag="1")]
    pub resource_attributes: ::prost::alloc::vec::Vec<ResourceAttribute>,
    #[prost(string, tag="2")]
    pub next_page_token: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ArchiveResourceAttributeResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeRequest {
    #[prost(string, tag="1")]
    pub resource_attribute_id: ::prost::alloc::string::String,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UnarchiveResourceAttributeResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributesRequest {
    #[prost(string, repeated, tag="1")]
    pub resource_attribute_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchArchiveResourceAttributesResponse {
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributesRequest {
    #[prost(string, repeated, tag="1")]
    pub resource_attribute_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct BatchUnarchiveResourceAttributesResponse {
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ResourceAttributeKeyType {
    Unspecified = 0,
    Enum = 1,
    Boolean = 2,
    Number = 3,
    SetOfEnum = 4,
}
impl ResourceAttributeKeyType {
    /// 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 {
            ResourceAttributeKeyType::Unspecified => "RESOURCE_ATTRIBUTE_KEY_TYPE_UNSPECIFIED",
            ResourceAttributeKeyType::Enum => "RESOURCE_ATTRIBUTE_KEY_TYPE_ENUM",
            ResourceAttributeKeyType::Boolean => "RESOURCE_ATTRIBUTE_KEY_TYPE_BOOLEAN",
            ResourceAttributeKeyType::Number => "RESOURCE_ATTRIBUTE_KEY_TYPE_NUMBER",
            ResourceAttributeKeyType::SetOfEnum => "RESOURCE_ATTRIBUTE_KEY_TYPE_SET_OF_ENUM",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "RESOURCE_ATTRIBUTE_KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "RESOURCE_ATTRIBUTE_KEY_TYPE_ENUM" => Some(Self::Enum),
            "RESOURCE_ATTRIBUTE_KEY_TYPE_BOOLEAN" => Some(Self::Boolean),
            "RESOURCE_ATTRIBUTE_KEY_TYPE_NUMBER" => Some(Self::Number),
            "RESOURCE_ATTRIBUTE_KEY_TYPE_SET_OF_ENUM" => Some(Self::SetOfEnum),
            _ => None,
        }
    }
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ResourceAttributeEntityType {
    Unspecified = 0,
    Asset = 1,
    Channel = 2,
}
impl ResourceAttributeEntityType {
    /// 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 {
            ResourceAttributeEntityType::Unspecified => "RESOURCE_ATTRIBUTE_ENTITY_TYPE_UNSPECIFIED",
            ResourceAttributeEntityType::Asset => "RESOURCE_ATTRIBUTE_ENTITY_TYPE_ASSET",
            ResourceAttributeEntityType::Channel => "RESOURCE_ATTRIBUTE_ENTITY_TYPE_CHANNEL",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "RESOURCE_ATTRIBUTE_ENTITY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "RESOURCE_ATTRIBUTE_ENTITY_TYPE_ASSET" => Some(Self::Asset),
            "RESOURCE_ATTRIBUTE_ENTITY_TYPE_CHANNEL" => Some(Self::Channel),
            _ => None,
        }
    }
}
include!("sift.resource_attribute.v1.tonic.rs");
include!("sift.resource_attribute.v1.serde.rs");
// @@protoc_insertion_point(module)