#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserId {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TeamId {
    #[prost(uint32, tag = "1")]
    pub id: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UserAccountId {
    #[prost(uint32, tag = "1")]
    pub id: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OrganizationId {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RoleId {
    #[prost(uint32, tag = "1")]
    pub id: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OrgGroupId {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct TeamGroupId {
    #[prost(uint32, tag = "1")]
    pub id: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct ScopeId {
    #[prost(uint32, tag = "1")]
    pub id: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Resource {
    Unspecified = 0,
    Coralogix = 1,
    Kibana = 2,
    Apiaccess = 3,
    Grafana = 4,
    Accountmanager = 5,
    Groups = 6,
    Alerts = 7,
    Webhooks = 8,
    LogsDataingress = 9,
    SpansDataingress = 10,
    MetricsDataingress = 11,
    Apikeys = 12,
    Team = 13,
    TeamInvites = 14,
    Sso = 15,
    QueryDataLegacy = 16,
    ApiKeyLegacy = 17,
    SnowbitSetup = 18,
    SnowbitOverview = 19,
    SnowbitCspm = 20,
    SnowbitResourceExplorer = 21,
    SnowbitSspm = 22,
    SnowbitAlerts = 23,
    CloudSecurity = 24,
    UserApiKeys = 25,
    TeamApiKeys = 26,
    TeamApiKeysSecuritySettings = 27,
    TeamDashboards = 28,
    CloudMetadataEnrichment = 29,
    GeoEnrichment = 30,
    GlobalMapping = 31,
    K8sInfraMonitoring = 32,
    SecurityEnrichment = 33,
    Serverless = 34,
    TeamCustomEnrichment = 35,
    Jaeger = 36,
    ServiceMap = 37,
    SpansDataAnalyticsHigh = 38,
    SpansDataApiHigh = 39,
    SpansDataSetupHigh = 40,
    TeamActions = 41,
    TeamAuditing = 42,
    TeamPayAsYouGo = 43,
    TeamPayments = 44,
    TeamSlackNotifications = 45,
    UserActions = 46,
    UserEmailNotifications = 47,
    VersionBenchmarksReports = 48,
    AlertsMap = 49,
    CloudMetadataIngress = 50,
    ContextualData = 51,
    DataMap = 52,
    DataUsage = 53,
    Extensions = 54,
    HomeDashboard = 55,
    Incidents = 56,
    Integrations = 57,
    LegacyArchiveQueries = 58,
    Livetail = 59,
    LogsDataAnalyticsHigh = 60,
    LogsDataAnalyticsLow = 61,
    LogsDataApiHigh = 62,
    LogsDataApiLow = 63,
    LogsDataSetupHigh = 64,
    LogsDataSetupLow = 65,
    LogsEvents2metrics = 66,
    LogsTco = 67,
    MetricsDataAnalyticsHigh = 68,
    MetricsDataAnalyticsLow = 69,
    MetricsDataApiHigh = 70,
    MetricsDataApiLow = 71,
    MetricsDataSetupHigh = 72,
    MetricsDataSetupLow = 73,
    MetricsRecordingRules = 74,
    MetricsTco = 75,
    OpensearchDashboards = 76,
    OrgAdmins = 77,
    OrgQuota = 78,
    OrgSettings = 79,
    OrgTeams = 80,
    OutboundWebhooks = 81,
    ParsingRules = 82,
    Rum = 83,
    RumIngress = 84,
    ServiceCatalog = 85,
    SpansDataAnalyticsLow = 86,
    SpansDataApiLow = 87,
    TracesDataIngress = 88,
    SpansDataSetupLow = 89,
    SpansEvents2metrics = 90,
    SpansTco = 91,
    TeamDomain = 92,
    TeamGroups = 93,
    TeamIpAccess = 94,
    TeamMembers = 95,
    TeamRoles = 96,
    TeamSavedViews = 97,
    TeamScim = 98,
    TeamSessions = 99,
    TeamSso = 100,
    UserDashboards = 101,
    UserLegacyLogsQueryApiKeys = 102,
    UserLegacyOtherApiKeys = 103,
    UserSavedViews = 104,
    UserSettings = 105,
    VersionBenchmarkTags = 106,
    SourceMapping = 107,
    SetupCorrelation = 108,
    LogsAlerts = 109,
    SpansAlerts = 110,
    MetricsAlerts = 111,
    SuppressionRules = 112,
    UserAuthInfo = 113,
    TeamScopes = 114,
    TeamQuota = 115,
    RumTeamSavedFilter = 116,
    RumUserSavedFilter = 117,
    Investigations = 118,
    DataIngestApiKeys = 119,
    PersonalCustomApiKeys = 120,
    TeamCustomApiKeys = 121,
    LogsDataOutSetup = 122,
    DataprimeAiQueryAssistant = 123,
    TeamLandingPage = 124,
    ResourceCatalog = 125,
    TeamAlertsSettings = 126,
    TeamAiSettings = 127,
    NotificationCenterConnectors = 128,
    NotificationCenterPresets = 129,
}
impl Resource {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "RESOURCE_UNSPECIFIED",
            Self::Coralogix => "RESOURCE_CORALOGIX",
            Self::Kibana => "RESOURCE_KIBANA",
            Self::Apiaccess => "RESOURCE_APIACCESS",
            Self::Grafana => "RESOURCE_GRAFANA",
            Self::Accountmanager => "RESOURCE_ACCOUNTMANAGER",
            Self::Groups => "RESOURCE_GROUPS",
            Self::Alerts => "RESOURCE_ALERTS",
            Self::Webhooks => "RESOURCE_WEBHOOKS",
            Self::LogsDataingress => "RESOURCE_LOGS_DATAINGRESS",
            Self::SpansDataingress => "RESOURCE_SPANS_DATAINGRESS",
            Self::MetricsDataingress => "RESOURCE_METRICS_DATAINGRESS",
            Self::Apikeys => "RESOURCE_APIKEYS",
            Self::Team => "RESOURCE_TEAM",
            Self::TeamInvites => "RESOURCE_TEAM_INVITES",
            Self::Sso => "RESOURCE_SSO",
            Self::QueryDataLegacy => "RESOURCE_QUERY_DATA_LEGACY",
            Self::ApiKeyLegacy => "RESOURCE_API_KEY_LEGACY",
            Self::SnowbitSetup => "RESOURCE_SNOWBIT_SETUP",
            Self::SnowbitOverview => "RESOURCE_SNOWBIT_OVERVIEW",
            Self::SnowbitCspm => "RESOURCE_SNOWBIT_CSPM",
            Self::SnowbitResourceExplorer => "RESOURCE_SNOWBIT_RESOURCE_EXPLORER",
            Self::SnowbitSspm => "RESOURCE_SNOWBIT_SSPM",
            Self::SnowbitAlerts => "RESOURCE_SNOWBIT_ALERTS",
            Self::CloudSecurity => "RESOURCE_CLOUD_SECURITY",
            Self::UserApiKeys => "RESOURCE_USER_API_KEYS",
            Self::TeamApiKeys => "RESOURCE_TEAM_API_KEYS",
            Self::TeamApiKeysSecuritySettings => {
                "RESOURCE_TEAM_API_KEYS_SECURITY_SETTINGS"
            }
            Self::TeamDashboards => "RESOURCE_TEAM_DASHBOARDS",
            Self::CloudMetadataEnrichment => "RESOURCE_CLOUD_METADATA_ENRICHMENT",
            Self::GeoEnrichment => "RESOURCE_GEO_ENRICHMENT",
            Self::GlobalMapping => "RESOURCE_GLOBAL_MAPPING",
            Self::K8sInfraMonitoring => "RESOURCE_K8S_INFRA_MONITORING",
            Self::SecurityEnrichment => "RESOURCE_SECURITY_ENRICHMENT",
            Self::Serverless => "RESOURCE_SERVERLESS",
            Self::TeamCustomEnrichment => "RESOURCE_TEAM_CUSTOM_ENRICHMENT",
            Self::Jaeger => "RESOURCE_JAEGER",
            Self::ServiceMap => "RESOURCE_SERVICE_MAP",
            Self::SpansDataAnalyticsHigh => "RESOURCE_SPANS_DATA_ANALYTICS_HIGH",
            Self::SpansDataApiHigh => "RESOURCE_SPANS_DATA_API_HIGH",
            Self::SpansDataSetupHigh => "RESOURCE_SPANS_DATA_SETUP_HIGH",
            Self::TeamActions => "RESOURCE_TEAM_ACTIONS",
            Self::TeamAuditing => "RESOURCE_TEAM_AUDITING",
            Self::TeamPayAsYouGo => "RESOURCE_TEAM_PAY_AS_YOU_GO",
            Self::TeamPayments => "RESOURCE_TEAM_PAYMENTS",
            Self::TeamSlackNotifications => "RESOURCE_TEAM_SLACK_NOTIFICATIONS",
            Self::UserActions => "RESOURCE_USER_ACTIONS",
            Self::UserEmailNotifications => "RESOURCE_USER_EMAIL_NOTIFICATIONS",
            Self::VersionBenchmarksReports => "RESOURCE_VERSION_BENCHMARKS_REPORTS",
            Self::AlertsMap => "RESOURCE_ALERTS_MAP",
            Self::CloudMetadataIngress => "RESOURCE_CLOUD_METADATA_INGRESS",
            Self::ContextualData => "RESOURCE_CONTEXTUAL_DATA",
            Self::DataMap => "RESOURCE_DATA_MAP",
            Self::DataUsage => "RESOURCE_DATA_USAGE",
            Self::Extensions => "RESOURCE_EXTENSIONS",
            Self::HomeDashboard => "RESOURCE_HOME_DASHBOARD",
            Self::Incidents => "RESOURCE_INCIDENTS",
            Self::Integrations => "RESOURCE_INTEGRATIONS",
            Self::LegacyArchiveQueries => "RESOURCE_LEGACY_ARCHIVE_QUERIES",
            Self::Livetail => "RESOURCE_LIVETAIL",
            Self::LogsDataAnalyticsHigh => "RESOURCE_LOGS_DATA_ANALYTICS_HIGH",
            Self::LogsDataAnalyticsLow => "RESOURCE_LOGS_DATA_ANALYTICS_LOW",
            Self::LogsDataApiHigh => "RESOURCE_LOGS_DATA_API_HIGH",
            Self::LogsDataApiLow => "RESOURCE_LOGS_DATA_API_LOW",
            Self::LogsDataSetupHigh => "RESOURCE_LOGS_DATA_SETUP_HIGH",
            Self::LogsDataSetupLow => "RESOURCE_LOGS_DATA_SETUP_LOW",
            Self::LogsEvents2metrics => "RESOURCE_LOGS_EVENTS2METRICS",
            Self::LogsTco => "RESOURCE_LOGS_TCO",
            Self::MetricsDataAnalyticsHigh => "RESOURCE_METRICS_DATA_ANALYTICS_HIGH",
            Self::MetricsDataAnalyticsLow => "RESOURCE_METRICS_DATA_ANALYTICS_LOW",
            Self::MetricsDataApiHigh => "RESOURCE_METRICS_DATA_API_HIGH",
            Self::MetricsDataApiLow => "RESOURCE_METRICS_DATA_API_LOW",
            Self::MetricsDataSetupHigh => "RESOURCE_METRICS_DATA_SETUP_HIGH",
            Self::MetricsDataSetupLow => "RESOURCE_METRICS_DATA_SETUP_LOW",
            Self::MetricsRecordingRules => "RESOURCE_METRICS_RECORDING_RULES",
            Self::MetricsTco => "RESOURCE_METRICS_TCO",
            Self::OpensearchDashboards => "RESOURCE_OPENSEARCH_DASHBOARDS",
            Self::OrgAdmins => "RESOURCE_ORG_ADMINS",
            Self::OrgQuota => "RESOURCE_ORG_QUOTA",
            Self::OrgSettings => "RESOURCE_ORG_SETTINGS",
            Self::OrgTeams => "RESOURCE_ORG_TEAMS",
            Self::OutboundWebhooks => "RESOURCE_OUTBOUND_WEBHOOKS",
            Self::ParsingRules => "RESOURCE_PARSING_RULES",
            Self::Rum => "RESOURCE_RUM",
            Self::RumIngress => "RESOURCE_RUM_INGRESS",
            Self::ServiceCatalog => "RESOURCE_SERVICE_CATALOG",
            Self::SpansDataAnalyticsLow => "RESOURCE_SPANS_DATA_ANALYTICS_LOW",
            Self::SpansDataApiLow => "RESOURCE_SPANS_DATA_API_LOW",
            Self::TracesDataIngress => "RESOURCE_TRACES_DATA_INGRESS",
            Self::SpansDataSetupLow => "RESOURCE_SPANS_DATA_SETUP_LOW",
            Self::SpansEvents2metrics => "RESOURCE_SPANS_EVENTS2METRICS",
            Self::SpansTco => "RESOURCE_SPANS_TCO",
            Self::TeamDomain => "RESOURCE_TEAM_DOMAIN",
            Self::TeamGroups => "RESOURCE_TEAM_GROUPS",
            Self::TeamIpAccess => "RESOURCE_TEAM_IP_ACCESS",
            Self::TeamMembers => "RESOURCE_TEAM_MEMBERS",
            Self::TeamRoles => "RESOURCE_TEAM_ROLES",
            Self::TeamSavedViews => "RESOURCE_TEAM_SAVED_VIEWS",
            Self::TeamScim => "RESOURCE_TEAM_SCIM",
            Self::TeamSessions => "RESOURCE_TEAM_SESSIONS",
            Self::TeamSso => "RESOURCE_TEAM_SSO",
            Self::UserDashboards => "RESOURCE_USER_DASHBOARDS",
            Self::UserLegacyLogsQueryApiKeys => {
                "RESOURCE_USER_LEGACY_LOGS_QUERY_API_KEYS"
            }
            Self::UserLegacyOtherApiKeys => "RESOURCE_USER_LEGACY_OTHER_API_KEYS",
            Self::UserSavedViews => "RESOURCE_USER_SAVED_VIEWS",
            Self::UserSettings => "RESOURCE_USER_SETTINGS",
            Self::VersionBenchmarkTags => "RESOURCE_VERSION_BENCHMARK_TAGS",
            Self::SourceMapping => "RESOURCE_SOURCE_MAPPING",
            Self::SetupCorrelation => "RESOURCE_SETUP_CORRELATION",
            Self::LogsAlerts => "RESOURCE_LOGS_ALERTS",
            Self::SpansAlerts => "RESOURCE_SPANS_ALERTS",
            Self::MetricsAlerts => "RESOURCE_METRICS_ALERTS",
            Self::SuppressionRules => "RESOURCE_SUPPRESSION_RULES",
            Self::UserAuthInfo => "RESOURCE_USER_AUTH_INFO",
            Self::TeamScopes => "RESOURCE_TEAM_SCOPES",
            Self::TeamQuota => "RESOURCE_TEAM_QUOTA",
            Self::RumTeamSavedFilter => "RESOURCE_RUM_TEAM_SAVED_FILTER",
            Self::RumUserSavedFilter => "RESOURCE_RUM_USER_SAVED_FILTER",
            Self::Investigations => "RESOURCE_INVESTIGATIONS",
            Self::DataIngestApiKeys => "RESOURCE_DATA_INGEST_API_KEYS",
            Self::PersonalCustomApiKeys => "RESOURCE_PERSONAL_CUSTOM_API_KEYS",
            Self::TeamCustomApiKeys => "RESOURCE_TEAM_CUSTOM_API_KEYS",
            Self::LogsDataOutSetup => "RESOURCE_LOGS_DATA_OUT_SETUP",
            Self::DataprimeAiQueryAssistant => "RESOURCE_DATAPRIME_AI_QUERY_ASSISTANT",
            Self::TeamLandingPage => "RESOURCE_TEAM_LANDING_PAGE",
            Self::ResourceCatalog => "RESOURCE_RESOURCE_CATALOG",
            Self::TeamAlertsSettings => "RESOURCE_TEAM_ALERTS_SETTINGS",
            Self::TeamAiSettings => "RESOURCE_TEAM_AI_SETTINGS",
            Self::NotificationCenterConnectors => {
                "RESOURCE_NOTIFICATION_CENTER_CONNECTORS"
            }
            Self::NotificationCenterPresets => "RESOURCE_NOTIFICATION_CENTER_PRESETS",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
            "RESOURCE_CORALOGIX" => Some(Self::Coralogix),
            "RESOURCE_KIBANA" => Some(Self::Kibana),
            "RESOURCE_APIACCESS" => Some(Self::Apiaccess),
            "RESOURCE_GRAFANA" => Some(Self::Grafana),
            "RESOURCE_ACCOUNTMANAGER" => Some(Self::Accountmanager),
            "RESOURCE_GROUPS" => Some(Self::Groups),
            "RESOURCE_ALERTS" => Some(Self::Alerts),
            "RESOURCE_WEBHOOKS" => Some(Self::Webhooks),
            "RESOURCE_LOGS_DATAINGRESS" => Some(Self::LogsDataingress),
            "RESOURCE_SPANS_DATAINGRESS" => Some(Self::SpansDataingress),
            "RESOURCE_METRICS_DATAINGRESS" => Some(Self::MetricsDataingress),
            "RESOURCE_APIKEYS" => Some(Self::Apikeys),
            "RESOURCE_TEAM" => Some(Self::Team),
            "RESOURCE_TEAM_INVITES" => Some(Self::TeamInvites),
            "RESOURCE_SSO" => Some(Self::Sso),
            "RESOURCE_QUERY_DATA_LEGACY" => Some(Self::QueryDataLegacy),
            "RESOURCE_API_KEY_LEGACY" => Some(Self::ApiKeyLegacy),
            "RESOURCE_SNOWBIT_SETUP" => Some(Self::SnowbitSetup),
            "RESOURCE_SNOWBIT_OVERVIEW" => Some(Self::SnowbitOverview),
            "RESOURCE_SNOWBIT_CSPM" => Some(Self::SnowbitCspm),
            "RESOURCE_SNOWBIT_RESOURCE_EXPLORER" => Some(Self::SnowbitResourceExplorer),
            "RESOURCE_SNOWBIT_SSPM" => Some(Self::SnowbitSspm),
            "RESOURCE_SNOWBIT_ALERTS" => Some(Self::SnowbitAlerts),
            "RESOURCE_CLOUD_SECURITY" => Some(Self::CloudSecurity),
            "RESOURCE_USER_API_KEYS" => Some(Self::UserApiKeys),
            "RESOURCE_TEAM_API_KEYS" => Some(Self::TeamApiKeys),
            "RESOURCE_TEAM_API_KEYS_SECURITY_SETTINGS" => {
                Some(Self::TeamApiKeysSecuritySettings)
            }
            "RESOURCE_TEAM_DASHBOARDS" => Some(Self::TeamDashboards),
            "RESOURCE_CLOUD_METADATA_ENRICHMENT" => Some(Self::CloudMetadataEnrichment),
            "RESOURCE_GEO_ENRICHMENT" => Some(Self::GeoEnrichment),
            "RESOURCE_GLOBAL_MAPPING" => Some(Self::GlobalMapping),
            "RESOURCE_K8S_INFRA_MONITORING" => Some(Self::K8sInfraMonitoring),
            "RESOURCE_SECURITY_ENRICHMENT" => Some(Self::SecurityEnrichment),
            "RESOURCE_SERVERLESS" => Some(Self::Serverless),
            "RESOURCE_TEAM_CUSTOM_ENRICHMENT" => Some(Self::TeamCustomEnrichment),
            "RESOURCE_JAEGER" => Some(Self::Jaeger),
            "RESOURCE_SERVICE_MAP" => Some(Self::ServiceMap),
            "RESOURCE_SPANS_DATA_ANALYTICS_HIGH" => Some(Self::SpansDataAnalyticsHigh),
            "RESOURCE_SPANS_DATA_API_HIGH" => Some(Self::SpansDataApiHigh),
            "RESOURCE_SPANS_DATA_SETUP_HIGH" => Some(Self::SpansDataSetupHigh),
            "RESOURCE_TEAM_ACTIONS" => Some(Self::TeamActions),
            "RESOURCE_TEAM_AUDITING" => Some(Self::TeamAuditing),
            "RESOURCE_TEAM_PAY_AS_YOU_GO" => Some(Self::TeamPayAsYouGo),
            "RESOURCE_TEAM_PAYMENTS" => Some(Self::TeamPayments),
            "RESOURCE_TEAM_SLACK_NOTIFICATIONS" => Some(Self::TeamSlackNotifications),
            "RESOURCE_USER_ACTIONS" => Some(Self::UserActions),
            "RESOURCE_USER_EMAIL_NOTIFICATIONS" => Some(Self::UserEmailNotifications),
            "RESOURCE_VERSION_BENCHMARKS_REPORTS" => Some(Self::VersionBenchmarksReports),
            "RESOURCE_ALERTS_MAP" => Some(Self::AlertsMap),
            "RESOURCE_CLOUD_METADATA_INGRESS" => Some(Self::CloudMetadataIngress),
            "RESOURCE_CONTEXTUAL_DATA" => Some(Self::ContextualData),
            "RESOURCE_DATA_MAP" => Some(Self::DataMap),
            "RESOURCE_DATA_USAGE" => Some(Self::DataUsage),
            "RESOURCE_EXTENSIONS" => Some(Self::Extensions),
            "RESOURCE_HOME_DASHBOARD" => Some(Self::HomeDashboard),
            "RESOURCE_INCIDENTS" => Some(Self::Incidents),
            "RESOURCE_INTEGRATIONS" => Some(Self::Integrations),
            "RESOURCE_LEGACY_ARCHIVE_QUERIES" => Some(Self::LegacyArchiveQueries),
            "RESOURCE_LIVETAIL" => Some(Self::Livetail),
            "RESOURCE_LOGS_DATA_ANALYTICS_HIGH" => Some(Self::LogsDataAnalyticsHigh),
            "RESOURCE_LOGS_DATA_ANALYTICS_LOW" => Some(Self::LogsDataAnalyticsLow),
            "RESOURCE_LOGS_DATA_API_HIGH" => Some(Self::LogsDataApiHigh),
            "RESOURCE_LOGS_DATA_API_LOW" => Some(Self::LogsDataApiLow),
            "RESOURCE_LOGS_DATA_SETUP_HIGH" => Some(Self::LogsDataSetupHigh),
            "RESOURCE_LOGS_DATA_SETUP_LOW" => Some(Self::LogsDataSetupLow),
            "RESOURCE_LOGS_EVENTS2METRICS" => Some(Self::LogsEvents2metrics),
            "RESOURCE_LOGS_TCO" => Some(Self::LogsTco),
            "RESOURCE_METRICS_DATA_ANALYTICS_HIGH" => {
                Some(Self::MetricsDataAnalyticsHigh)
            }
            "RESOURCE_METRICS_DATA_ANALYTICS_LOW" => Some(Self::MetricsDataAnalyticsLow),
            "RESOURCE_METRICS_DATA_API_HIGH" => Some(Self::MetricsDataApiHigh),
            "RESOURCE_METRICS_DATA_API_LOW" => Some(Self::MetricsDataApiLow),
            "RESOURCE_METRICS_DATA_SETUP_HIGH" => Some(Self::MetricsDataSetupHigh),
            "RESOURCE_METRICS_DATA_SETUP_LOW" => Some(Self::MetricsDataSetupLow),
            "RESOURCE_METRICS_RECORDING_RULES" => Some(Self::MetricsRecordingRules),
            "RESOURCE_METRICS_TCO" => Some(Self::MetricsTco),
            "RESOURCE_OPENSEARCH_DASHBOARDS" => Some(Self::OpensearchDashboards),
            "RESOURCE_ORG_ADMINS" => Some(Self::OrgAdmins),
            "RESOURCE_ORG_QUOTA" => Some(Self::OrgQuota),
            "RESOURCE_ORG_SETTINGS" => Some(Self::OrgSettings),
            "RESOURCE_ORG_TEAMS" => Some(Self::OrgTeams),
            "RESOURCE_OUTBOUND_WEBHOOKS" => Some(Self::OutboundWebhooks),
            "RESOURCE_PARSING_RULES" => Some(Self::ParsingRules),
            "RESOURCE_RUM" => Some(Self::Rum),
            "RESOURCE_RUM_INGRESS" => Some(Self::RumIngress),
            "RESOURCE_SERVICE_CATALOG" => Some(Self::ServiceCatalog),
            "RESOURCE_SPANS_DATA_ANALYTICS_LOW" => Some(Self::SpansDataAnalyticsLow),
            "RESOURCE_SPANS_DATA_API_LOW" => Some(Self::SpansDataApiLow),
            "RESOURCE_TRACES_DATA_INGRESS" => Some(Self::TracesDataIngress),
            "RESOURCE_SPANS_DATA_SETUP_LOW" => Some(Self::SpansDataSetupLow),
            "RESOURCE_SPANS_EVENTS2METRICS" => Some(Self::SpansEvents2metrics),
            "RESOURCE_SPANS_TCO" => Some(Self::SpansTco),
            "RESOURCE_TEAM_DOMAIN" => Some(Self::TeamDomain),
            "RESOURCE_TEAM_GROUPS" => Some(Self::TeamGroups),
            "RESOURCE_TEAM_IP_ACCESS" => Some(Self::TeamIpAccess),
            "RESOURCE_TEAM_MEMBERS" => Some(Self::TeamMembers),
            "RESOURCE_TEAM_ROLES" => Some(Self::TeamRoles),
            "RESOURCE_TEAM_SAVED_VIEWS" => Some(Self::TeamSavedViews),
            "RESOURCE_TEAM_SCIM" => Some(Self::TeamScim),
            "RESOURCE_TEAM_SESSIONS" => Some(Self::TeamSessions),
            "RESOURCE_TEAM_SSO" => Some(Self::TeamSso),
            "RESOURCE_USER_DASHBOARDS" => Some(Self::UserDashboards),
            "RESOURCE_USER_LEGACY_LOGS_QUERY_API_KEYS" => {
                Some(Self::UserLegacyLogsQueryApiKeys)
            }
            "RESOURCE_USER_LEGACY_OTHER_API_KEYS" => Some(Self::UserLegacyOtherApiKeys),
            "RESOURCE_USER_SAVED_VIEWS" => Some(Self::UserSavedViews),
            "RESOURCE_USER_SETTINGS" => Some(Self::UserSettings),
            "RESOURCE_VERSION_BENCHMARK_TAGS" => Some(Self::VersionBenchmarkTags),
            "RESOURCE_SOURCE_MAPPING" => Some(Self::SourceMapping),
            "RESOURCE_SETUP_CORRELATION" => Some(Self::SetupCorrelation),
            "RESOURCE_LOGS_ALERTS" => Some(Self::LogsAlerts),
            "RESOURCE_SPANS_ALERTS" => Some(Self::SpansAlerts),
            "RESOURCE_METRICS_ALERTS" => Some(Self::MetricsAlerts),
            "RESOURCE_SUPPRESSION_RULES" => Some(Self::SuppressionRules),
            "RESOURCE_USER_AUTH_INFO" => Some(Self::UserAuthInfo),
            "RESOURCE_TEAM_SCOPES" => Some(Self::TeamScopes),
            "RESOURCE_TEAM_QUOTA" => Some(Self::TeamQuota),
            "RESOURCE_RUM_TEAM_SAVED_FILTER" => Some(Self::RumTeamSavedFilter),
            "RESOURCE_RUM_USER_SAVED_FILTER" => Some(Self::RumUserSavedFilter),
            "RESOURCE_INVESTIGATIONS" => Some(Self::Investigations),
            "RESOURCE_DATA_INGEST_API_KEYS" => Some(Self::DataIngestApiKeys),
            "RESOURCE_PERSONAL_CUSTOM_API_KEYS" => Some(Self::PersonalCustomApiKeys),
            "RESOURCE_TEAM_CUSTOM_API_KEYS" => Some(Self::TeamCustomApiKeys),
            "RESOURCE_LOGS_DATA_OUT_SETUP" => Some(Self::LogsDataOutSetup),
            "RESOURCE_DATAPRIME_AI_QUERY_ASSISTANT" => {
                Some(Self::DataprimeAiQueryAssistant)
            }
            "RESOURCE_TEAM_LANDING_PAGE" => Some(Self::TeamLandingPage),
            "RESOURCE_RESOURCE_CATALOG" => Some(Self::ResourceCatalog),
            "RESOURCE_TEAM_ALERTS_SETTINGS" => Some(Self::TeamAlertsSettings),
            "RESOURCE_TEAM_AI_SETTINGS" => Some(Self::TeamAiSettings),
            "RESOURCE_NOTIFICATION_CENTER_CONNECTORS" => {
                Some(Self::NotificationCenterConnectors)
            }
            "RESOURCE_NOTIFICATION_CENTER_PRESETS" => {
                Some(Self::NotificationCenterPresets)
            }
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Action {
    Unspecified = 0,
    Admin = 1,
    Operate = 2,
    ViewOnly = 3,
    Edit = 4,
    Delete = 5,
    Create = 6,
    ChangeQuota = 7,
    GenerateKey = 8,
    Write = 9,
    Manage = 10,
    Read = 11,
    ReadConfig = 12,
    Deploy = 13,
    CreateSecurityAlert = 14,
    Update = 15,
    Readdata = 16,
    Updateconfig = 17,
    Updatedata = 18,
    View = 19,
    Execute = 20,
    Acknowledge = 21,
    Assign = 22,
    Close = 23,
    Updateuserwidgets = 24,
    Readmaps = 25,
    Readpolicies = 26,
    Readteamwidgets = 27,
    Readuserwidgets = 28,
    Reindex = 29,
    Senddata = 30,
    Snooze = 31,
    Updatemaps = 32,
    Updatepolicies = 33,
    Updateteamwidgets = 34,
    Readmapping = 35,
    Readsliconfig = 36,
    Updatefiltersconfig = 37,
    Updatesliconfig = 38,
    Uploadmapping = 39,
    ReadDimensionsConfig = 40,
    UpdateDimensionsConfig = 41,
    ReadApdexConfig = 42,
    UpdateApdexConfig = 43,
    ManageConnectionToOrg = 44,
    ReadGroups = 45,
    GetDailyEmails = 46,
    GetDataUsageWarnings = 47,
    GetFlowAnomalies = 48,
    GetSpikeAnomalies = 49,
    ReadAll = 50,
    UpdateAll = 51,
    ReadSummary = 52,
}
impl Action {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "ACTION_UNSPECIFIED",
            Self::Admin => "ACTION_ADMIN",
            Self::Operate => "ACTION_OPERATE",
            Self::ViewOnly => "ACTION_VIEW_ONLY",
            Self::Edit => "ACTION_EDIT",
            Self::Delete => "ACTION_DELETE",
            Self::Create => "ACTION_CREATE",
            Self::ChangeQuota => "ACTION_CHANGE_QUOTA",
            Self::GenerateKey => "ACTION_GENERATE_KEY",
            Self::Write => "ACTION_WRITE",
            Self::Manage => "ACTION_MANAGE",
            Self::Read => "ACTION_READ",
            Self::ReadConfig => "ACTION_READ_CONFIG",
            Self::Deploy => "ACTION_DEPLOY",
            Self::CreateSecurityAlert => "ACTION_CREATE_SECURITY_ALERT",
            Self::Update => "ACTION_UPDATE",
            Self::Readdata => "ACTION_READDATA",
            Self::Updateconfig => "ACTION_UPDATECONFIG",
            Self::Updatedata => "ACTION_UPDATEDATA",
            Self::View => "ACTION_VIEW",
            Self::Execute => "ACTION_EXECUTE",
            Self::Acknowledge => "ACTION_ACKNOWLEDGE",
            Self::Assign => "ACTION_ASSIGN",
            Self::Close => "ACTION_CLOSE",
            Self::Updateuserwidgets => "ACTION_UPDATEUSERWIDGETS",
            Self::Readmaps => "ACTION_READMAPS",
            Self::Readpolicies => "ACTION_READPOLICIES",
            Self::Readteamwidgets => "ACTION_READTEAMWIDGETS",
            Self::Readuserwidgets => "ACTION_READUSERWIDGETS",
            Self::Reindex => "ACTION_REINDEX",
            Self::Senddata => "ACTION_SENDDATA",
            Self::Snooze => "ACTION_SNOOZE",
            Self::Updatemaps => "ACTION_UPDATEMAPS",
            Self::Updatepolicies => "ACTION_UPDATEPOLICIES",
            Self::Updateteamwidgets => "ACTION_UPDATETEAMWIDGETS",
            Self::Readmapping => "ACTION_READMAPPING",
            Self::Readsliconfig => "ACTION_READSLICONFIG",
            Self::Updatefiltersconfig => "ACTION_UPDATEFILTERSCONFIG",
            Self::Updatesliconfig => "ACTION_UPDATESLICONFIG",
            Self::Uploadmapping => "ACTION_UPLOADMAPPING",
            Self::ReadDimensionsConfig => "ACTION_READ_DIMENSIONS_CONFIG",
            Self::UpdateDimensionsConfig => "ACTION_UPDATE_DIMENSIONS_CONFIG",
            Self::ReadApdexConfig => "ACTION_READ_APDEX_CONFIG",
            Self::UpdateApdexConfig => "ACTION_UPDATE_APDEX_CONFIG",
            Self::ManageConnectionToOrg => "ACTION_MANAGE_CONNECTION_TO_ORG",
            Self::ReadGroups => "ACTION_READ_GROUPS",
            Self::GetDailyEmails => "ACTION_GET_DAILY_EMAILS",
            Self::GetDataUsageWarnings => "ACTION_GET_DATA_USAGE_WARNINGS",
            Self::GetFlowAnomalies => "ACTION_GET_FLOW_ANOMALIES",
            Self::GetSpikeAnomalies => "ACTION_GET_SPIKE_ANOMALIES",
            Self::ReadAll => "ACTION_READ_ALL",
            Self::UpdateAll => "ACTION_UPDATE_ALL",
            Self::ReadSummary => "ACTION_READ_SUMMARY",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ACTION_UNSPECIFIED" => Some(Self::Unspecified),
            "ACTION_ADMIN" => Some(Self::Admin),
            "ACTION_OPERATE" => Some(Self::Operate),
            "ACTION_VIEW_ONLY" => Some(Self::ViewOnly),
            "ACTION_EDIT" => Some(Self::Edit),
            "ACTION_DELETE" => Some(Self::Delete),
            "ACTION_CREATE" => Some(Self::Create),
            "ACTION_CHANGE_QUOTA" => Some(Self::ChangeQuota),
            "ACTION_GENERATE_KEY" => Some(Self::GenerateKey),
            "ACTION_WRITE" => Some(Self::Write),
            "ACTION_MANAGE" => Some(Self::Manage),
            "ACTION_READ" => Some(Self::Read),
            "ACTION_READ_CONFIG" => Some(Self::ReadConfig),
            "ACTION_DEPLOY" => Some(Self::Deploy),
            "ACTION_CREATE_SECURITY_ALERT" => Some(Self::CreateSecurityAlert),
            "ACTION_UPDATE" => Some(Self::Update),
            "ACTION_READDATA" => Some(Self::Readdata),
            "ACTION_UPDATECONFIG" => Some(Self::Updateconfig),
            "ACTION_UPDATEDATA" => Some(Self::Updatedata),
            "ACTION_VIEW" => Some(Self::View),
            "ACTION_EXECUTE" => Some(Self::Execute),
            "ACTION_ACKNOWLEDGE" => Some(Self::Acknowledge),
            "ACTION_ASSIGN" => Some(Self::Assign),
            "ACTION_CLOSE" => Some(Self::Close),
            "ACTION_UPDATEUSERWIDGETS" => Some(Self::Updateuserwidgets),
            "ACTION_READMAPS" => Some(Self::Readmaps),
            "ACTION_READPOLICIES" => Some(Self::Readpolicies),
            "ACTION_READTEAMWIDGETS" => Some(Self::Readteamwidgets),
            "ACTION_READUSERWIDGETS" => Some(Self::Readuserwidgets),
            "ACTION_REINDEX" => Some(Self::Reindex),
            "ACTION_SENDDATA" => Some(Self::Senddata),
            "ACTION_SNOOZE" => Some(Self::Snooze),
            "ACTION_UPDATEMAPS" => Some(Self::Updatemaps),
            "ACTION_UPDATEPOLICIES" => Some(Self::Updatepolicies),
            "ACTION_UPDATETEAMWIDGETS" => Some(Self::Updateteamwidgets),
            "ACTION_READMAPPING" => Some(Self::Readmapping),
            "ACTION_READSLICONFIG" => Some(Self::Readsliconfig),
            "ACTION_UPDATEFILTERSCONFIG" => Some(Self::Updatefiltersconfig),
            "ACTION_UPDATESLICONFIG" => Some(Self::Updatesliconfig),
            "ACTION_UPLOADMAPPING" => Some(Self::Uploadmapping),
            "ACTION_READ_DIMENSIONS_CONFIG" => Some(Self::ReadDimensionsConfig),
            "ACTION_UPDATE_DIMENSIONS_CONFIG" => Some(Self::UpdateDimensionsConfig),
            "ACTION_READ_APDEX_CONFIG" => Some(Self::ReadApdexConfig),
            "ACTION_UPDATE_APDEX_CONFIG" => Some(Self::UpdateApdexConfig),
            "ACTION_MANAGE_CONNECTION_TO_ORG" => Some(Self::ManageConnectionToOrg),
            "ACTION_READ_GROUPS" => Some(Self::ReadGroups),
            "ACTION_GET_DAILY_EMAILS" => Some(Self::GetDailyEmails),
            "ACTION_GET_DATA_USAGE_WARNINGS" => Some(Self::GetDataUsageWarnings),
            "ACTION_GET_FLOW_ANOMALIES" => Some(Self::GetFlowAnomalies),
            "ACTION_GET_SPIKE_ANOMALIES" => Some(Self::GetSpikeAnomalies),
            "ACTION_READ_ALL" => Some(Self::ReadAll),
            "ACTION_UPDATE_ALL" => Some(Self::UpdateAll),
            "ACTION_READ_SUMMARY" => Some(Self::ReadSummary),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScopeFilter {
    #[prost(string, tag = "1")]
    pub term: ::prost::alloc::string::String,
    #[prost(enumeration = "FilterType", tag = "2")]
    pub filter_type: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScopeFilters {
    #[prost(message, repeated, tag = "1")]
    pub subsystems: ::prost::alloc::vec::Vec<ScopeFilter>,
    #[prost(message, repeated, tag = "2")]
    pub applications: ::prost::alloc::vec::Vec<ScopeFilter>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Scope {
    #[prost(message, optional, tag = "1")]
    pub id: ::core::option::Option<ScopeId>,
    #[prost(message, optional, tag = "2")]
    pub filters: ::core::option::Option<ScopeFilters>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct User {
    #[prost(message, optional, tag = "1")]
    pub user_id: ::core::option::Option<UserId>,
    #[prost(message, optional, tag = "2")]
    pub user_account_id: ::core::option::Option<UserAccountId>,
    #[prost(string, tag = "3")]
    pub username: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub first_name: ::prost::alloc::string::String,
    #[prost(string, tag = "5")]
    pub last_name: ::prost::alloc::string::String,
    #[prost(enumeration = "UserStatus", tag = "6")]
    pub status: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Role {
    #[prost(message, optional, tag = "1")]
    pub role_id: ::core::option::Option<RoleId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub description: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TeamGroupSummary {
    #[prost(message, optional, tag = "1")]
    pub id: ::core::option::Option<TeamGroupId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(uint32, tag = "3")]
    pub user_count: u32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SystemRole {
    #[prost(message, optional, tag = "1")]
    pub role_id: ::core::option::Option<RoleId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub description: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CustomRole {
    #[prost(message, optional, tag = "1")]
    pub role_id: ::core::option::Option<RoleId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub description: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "4")]
    pub parent_role_id: ::core::option::Option<RoleId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RoleSummary {
    #[prost(uint32, tag = "3")]
    pub user_count: u32,
    #[prost(message, repeated, tag = "4")]
    pub groups: ::prost::alloc::vec::Vec<TeamGroupSummary>,
    #[prost(message, repeated, tag = "5")]
    pub permissions: ::prost::alloc::vec::Vec<PermissionMetadata>,
    #[prost(oneof = "role_summary::Role", tags = "1, 2")]
    pub role: ::core::option::Option<role_summary::Role>,
}
pub mod role_summary {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Role {
        #[prost(message, tag = "1")]
        SystemRole(super::SystemRole),
        #[prost(message, tag = "2")]
        CustomRole(super::CustomRole),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OrgGroup {
    #[prost(message, optional, tag = "1")]
    pub org_group_id: ::core::option::Option<OrgGroupId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub org_id: ::core::option::Option<OrganizationId>,
    #[prost(message, repeated, tag = "4")]
    pub roles: ::prost::alloc::vec::Vec<Role>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TeamGroup {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(enumeration = "GroupOrigin", tag = "5")]
    pub group_origin: i32,
    #[prost(message, optional, tag = "6")]
    pub team_id: ::core::option::Option<TeamId>,
    #[prost(message, repeated, tag = "7")]
    pub roles: ::prost::alloc::vec::Vec<Role>,
    #[prost(message, optional, tag = "8")]
    pub scope: ::core::option::Option<Scope>,
    #[prost(message, optional, tag = "9")]
    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
    #[prost(message, optional, tag = "10")]
    pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
    #[prost(string, optional, tag = "11")]
    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PermissionGroupMetadata {
    #[prost(enumeration = "super::models::v1::PermissionGroup", tag = "1")]
    pub permission_group: i32,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub description: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub display_name: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PermissionMetadata {
    #[prost(enumeration = "super::models::v1::Permission", tag = "1")]
    pub permission: i32,
    #[prost(message, optional, tag = "2")]
    pub permission_group: ::core::option::Option<PermissionGroupMetadata>,
    #[prost(string, tag = "3")]
    pub expression: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub description: ::prost::alloc::string::String,
    #[prost(enumeration = "Action", tag = "5")]
    pub action: i32,
    #[prost(enumeration = "Resource", tag = "6")]
    pub resource: i32,
    #[prost(string, tag = "7")]
    pub doc_link: ::prost::alloc::string::String,
    #[prost(string, tag = "8")]
    pub explanation: ::prost::alloc::string::String,
    #[prost(bool, tag = "9")]
    pub is_send_data: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum FilterType {
    Unspecified = 0,
    StartsWith = 1,
    EndsWith = 2,
    Contains = 3,
    Exact = 4,
}
impl FilterType {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "FILTER_TYPE_UNSPECIFIED",
            Self::StartsWith => "FILTER_TYPE_STARTS_WITH",
            Self::EndsWith => "FILTER_TYPE_ENDS_WITH",
            Self::Contains => "FILTER_TYPE_CONTAINS",
            Self::Exact => "FILTER_TYPE_EXACT",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "FILTER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
            "FILTER_TYPE_STARTS_WITH" => Some(Self::StartsWith),
            "FILTER_TYPE_ENDS_WITH" => Some(Self::EndsWith),
            "FILTER_TYPE_CONTAINS" => Some(Self::Contains),
            "FILTER_TYPE_EXACT" => Some(Self::Exact),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum UserStatus {
    Unspecified = 0,
    Active = 1,
    Inactive = 2,
}
impl UserStatus {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "USER_STATUS_UNSPECIFIED",
            Self::Active => "USER_STATUS_ACTIVE",
            Self::Inactive => "USER_STATUS_INACTIVE",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
            "USER_STATUS_ACTIVE" => Some(Self::Active),
            "USER_STATUS_INACTIVE" => Some(Self::Inactive),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum GroupOrigin {
    Unspecified = 0,
    BuiltIn = 1,
    UserDefined = 2,
}
impl GroupOrigin {
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "GROUP_ORIGIN_UNSPECIFIED",
            Self::BuiltIn => "GROUP_ORIGIN_BUILT_IN",
            Self::UserDefined => "GROUP_ORIGIN_USER_DEFINED",
        }
    }
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "GROUP_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
            "GROUP_ORIGIN_BUILT_IN" => Some(Self::BuiltIn),
            "GROUP_ORIGIN_USER_DEFINED" => Some(Self::UserDefined),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetTeamGroupRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTeamGroupResponse {
    #[prost(message, optional, tag = "1")]
    pub group: ::core::option::Option<TeamGroup>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTeamGroupByNameRequest {
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTeamGroupByNameResponse {
    #[prost(message, optional, tag = "1")]
    pub group: ::core::option::Option<TeamGroup>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetTeamGroupsRequest {
    #[prost(message, optional, tag = "1")]
    pub team_id: ::core::option::Option<TeamId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTeamGroupsResponse {
    #[prost(message, repeated, tag = "1")]
    pub groups: ::prost::alloc::vec::Vec<TeamGroup>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateTeamGroupRequest {
    #[prost(string, tag = "1")]
    pub name: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub team_id: ::core::option::Option<TeamId>,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "5")]
    pub role_ids: ::prost::alloc::vec::Vec<RoleId>,
    #[prost(message, repeated, tag = "6")]
    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
    #[prost(message, optional, tag = "7")]
    pub scope_filters: ::core::option::Option<ScopeFilters>,
    #[prost(string, optional, tag = "8")]
    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CreateTeamGroupResponse {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateTeamGroupRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(string, tag = "2")]
    pub name: ::prost::alloc::string::String,
    #[prost(string, optional, tag = "3")]
    pub description: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, optional, tag = "5")]
    pub role_updates: ::core::option::Option<update_team_group_request::RoleUpdates>,
    #[prost(message, optional, tag = "6")]
    pub user_updates: ::core::option::Option<update_team_group_request::UserUpdates>,
    #[prost(message, optional, tag = "7")]
    pub scope_filters: ::core::option::Option<ScopeFilters>,
    #[prost(string, optional, tag = "8")]
    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
}
pub mod update_team_group_request {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct RoleUpdates {
        #[prost(message, repeated, tag = "1")]
        pub role_ids: ::prost::alloc::vec::Vec<super::RoleId>,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct UserUpdates {
        #[prost(message, repeated, tag = "1")]
        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct UpdateTeamGroupResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DeleteTeamGroupRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DeleteTeamGroupResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetGroupUsersRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(uint32, optional, tag = "2")]
    pub page_size: ::core::option::Option<u32>,
    #[prost(string, optional, tag = "3")]
    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetGroupUsersResponse {
    #[prost(message, repeated, tag = "1")]
    pub users: ::prost::alloc::vec::Vec<User>,
    #[prost(oneof = "get_group_users_response::NextPage", tags = "2, 3")]
    pub next_page: ::core::option::Option<get_group_users_response::NextPage>,
}
pub mod get_group_users_response {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
    pub struct NoMorePages {}
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct NextPageToken {
        #[prost(string, tag = "1")]
        pub next_page_token: ::prost::alloc::string::String,
    }
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum NextPage {
        #[prost(message, tag = "2")]
        NoMorePages(NoMorePages),
        #[prost(message, tag = "3")]
        Token(NextPageToken),
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AddUsersToTeamGroupRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(message, repeated, tag = "2")]
    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AddUsersToTeamGroupResponse {
    #[prost(message, optional, tag = "1")]
    pub team_id: ::core::option::Option<TeamId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AddUsersToTeamGroupsRequest {
    #[prost(message, optional, tag = "1")]
    pub team_id: ::core::option::Option<TeamId>,
    #[prost(message, repeated, tag = "2")]
    pub add_users_to_group: ::prost::alloc::vec::Vec<
        add_users_to_team_groups_request::AddUsersToTeamGroup,
    >,
}
pub mod add_users_to_team_groups_request {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct AddUsersToTeamGroup {
        #[prost(message, optional, tag = "1")]
        pub group_id: ::core::option::Option<super::TeamGroupId>,
        #[prost(message, repeated, tag = "2")]
        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct AddUsersToTeamGroupsResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveUsersFromTeamGroupRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(message, repeated, tag = "2")]
    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RemoveUsersFromTeamGroupResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RemoveUsersFromTeamGroupsRequest {
    #[prost(message, optional, tag = "1")]
    pub team_id: ::core::option::Option<TeamId>,
    #[prost(message, repeated, tag = "2")]
    pub remove_users_from_group: ::prost::alloc::vec::Vec<
        remove_users_from_team_groups_request::RemoveUsersFromTeamGroup,
    >,
}
pub mod remove_users_from_team_groups_request {
    #[derive(serde::Serialize, serde::Deserialize)]
    #[serde(rename_all = "snake_case")]
    #[derive(Clone, PartialEq, ::prost::Message)]
    pub struct RemoveUsersFromTeamGroup {
        #[prost(message, optional, tag = "1")]
        pub group_id: ::core::option::Option<super::TeamGroupId>,
        #[prost(message, repeated, tag = "2")]
        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RemoveUsersFromTeamGroupsResponse {}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SetTeamGroupScopeRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
    #[prost(message, optional, tag = "2")]
    pub scope_filters: ::core::option::Option<ScopeFilters>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct SetTeamGroupScopeResponse {
    #[prost(message, optional, tag = "1")]
    pub scope_id: ::core::option::Option<ScopeId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetTeamGroupScopeRequest {
    #[prost(message, optional, tag = "1")]
    pub group_id: ::core::option::Option<TeamGroupId>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetTeamGroupScopeResponse {
    #[prost(message, optional, tag = "1")]
    pub scope: ::core::option::Option<Scope>,
}
pub mod team_permissions_mgmt_service_client {
    #![allow(
        unused_variables,
        dead_code,
        missing_docs,
        clippy::wildcard_imports,
        clippy::let_unit_value,
    )]
    use tonic::codegen::*;
    use tonic::codegen::http::Uri;
    #[derive(Debug, Clone)]
    pub struct TeamPermissionsMgmtServiceClient<T> {
        inner: tonic::client::Grpc<T>,
    }
    impl TeamPermissionsMgmtServiceClient<tonic::transport::Channel> {
        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
        where
            D: TryInto<tonic::transport::Endpoint>,
            D::Error: Into<StdError>,
        {
            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
            Ok(Self::new(conn))
        }
    }
    impl<T> TeamPermissionsMgmtServiceClient<T>
    where
        T: tonic::client::GrpcService<tonic::body::BoxBody>,
        T::Error: Into<StdError>,
        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
    {
        pub fn new(inner: T) -> Self {
            let inner = tonic::client::Grpc::new(inner);
            Self { inner }
        }
        pub fn with_origin(inner: T, origin: Uri) -> Self {
            let inner = tonic::client::Grpc::with_origin(inner, origin);
            Self { inner }
        }
        pub fn with_interceptor<F>(
            inner: T,
            interceptor: F,
        ) -> TeamPermissionsMgmtServiceClient<InterceptedService<T, F>>
        where
            F: tonic::service::Interceptor,
            T::ResponseBody: Default,
            T: tonic::codegen::Service<
                http::Request<tonic::body::BoxBody>,
                Response = http::Response<
                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
                >,
            >,
            <T as tonic::codegen::Service<
                http::Request<tonic::body::BoxBody>,
            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
        {
            TeamPermissionsMgmtServiceClient::new(
                InterceptedService::new(inner, interceptor),
            )
        }
        #[must_use]
        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.send_compressed(encoding);
            self
        }
        #[must_use]
        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
            self.inner = self.inner.accept_compressed(encoding);
            self
        }
        #[must_use]
        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_decoding_message_size(limit);
            self
        }
        #[must_use]
        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
            self.inner = self.inner.max_encoding_message_size(limit);
            self
        }
        pub async fn get_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::GetTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "GetTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_team_group_by_name(
            &mut self,
            request: impl tonic::IntoRequest<super::GetTeamGroupByNameRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetTeamGroupByNameResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroupByName",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "GetTeamGroupByName",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_team_groups(
            &mut self,
            request: impl tonic::IntoRequest<super::GetTeamGroupsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetTeamGroupsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroups",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "GetTeamGroups",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn create_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::CreateTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::CreateTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/CreateTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "CreateTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn update_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::UpdateTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::UpdateTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/UpdateTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "UpdateTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn delete_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::DeleteTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::DeleteTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/DeleteTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "DeleteTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_group_users(
            &mut self,
            request: impl tonic::IntoRequest<super::GetGroupUsersRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetGroupUsersResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetGroupUsers",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "GetGroupUsers",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn add_users_to_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::AddUsersToTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::AddUsersToTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/AddUsersToTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "AddUsersToTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn add_users_to_team_groups(
            &mut self,
            request: impl tonic::IntoRequest<super::AddUsersToTeamGroupsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::AddUsersToTeamGroupsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/AddUsersToTeamGroups",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "AddUsersToTeamGroups",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn remove_users_from_team_group(
            &mut self,
            request: impl tonic::IntoRequest<super::RemoveUsersFromTeamGroupRequest>,
        ) -> std::result::Result<
            tonic::Response<super::RemoveUsersFromTeamGroupResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/RemoveUsersFromTeamGroup",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "RemoveUsersFromTeamGroup",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn remove_users_from_team_groups(
            &mut self,
            request: impl tonic::IntoRequest<super::RemoveUsersFromTeamGroupsRequest>,
        ) -> std::result::Result<
            tonic::Response<super::RemoveUsersFromTeamGroupsResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/RemoveUsersFromTeamGroups",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "RemoveUsersFromTeamGroups",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn set_team_group_scope(
            &mut self,
            request: impl tonic::IntoRequest<super::SetTeamGroupScopeRequest>,
        ) -> std::result::Result<
            tonic::Response<super::SetTeamGroupScopeResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/SetTeamGroupScope",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "SetTeamGroupScope",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
        pub async fn get_team_group_scope(
            &mut self,
            request: impl tonic::IntoRequest<super::GetTeamGroupScopeRequest>,
        ) -> std::result::Result<
            tonic::Response<super::GetTeamGroupScopeResponse>,
            tonic::Status,
        > {
            self.inner
                .ready()
                .await
                .map_err(|e| {
                    tonic::Status::unknown(
                        format!("Service was not ready: {}", e.into()),
                    )
                })?;
            let codec = tonic::codec::ProstCodec::default();
            let path = http::uri::PathAndQuery::from_static(
                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroupScope",
            );
            let mut req = request.into_request();
            req.extensions_mut()
                .insert(
                    GrpcMethod::new(
                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
                        "GetTeamGroupScope",
                    ),
                );
            self.inner.unary(req, path, codec).await
        }
    }
}