cx_api/generated/
com.coralogix.permissions.v1.rs

1// This file is @generated by prost-build.
2#[derive(serde::Serialize, serde::Deserialize)]
3#[serde(rename_all = "snake_case")]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct UserId {
6    #[prost(string, tag = "1")]
7    pub id: ::prost::alloc::string::String,
8}
9#[derive(serde::Serialize, serde::Deserialize)]
10#[serde(rename_all = "snake_case")]
11#[derive(Clone, Copy, PartialEq, ::prost::Message)]
12pub struct TeamId {
13    #[prost(uint32, tag = "1")]
14    pub id: u32,
15}
16#[derive(serde::Serialize, serde::Deserialize)]
17#[serde(rename_all = "snake_case")]
18#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19pub struct UserAccountId {
20    #[prost(uint32, tag = "1")]
21    pub id: u32,
22}
23#[derive(serde::Serialize, serde::Deserialize)]
24#[serde(rename_all = "snake_case")]
25#[derive(Clone, PartialEq, ::prost::Message)]
26pub struct OrganizationId {
27    #[prost(string, tag = "1")]
28    pub id: ::prost::alloc::string::String,
29}
30#[derive(serde::Serialize, serde::Deserialize)]
31#[serde(rename_all = "snake_case")]
32#[derive(Clone, Copy, PartialEq, ::prost::Message)]
33pub struct RoleId {
34    #[prost(uint32, tag = "1")]
35    pub id: u32,
36}
37#[derive(serde::Serialize, serde::Deserialize)]
38#[serde(rename_all = "snake_case")]
39#[derive(Clone, PartialEq, ::prost::Message)]
40pub struct OrgGroupId {
41    #[prost(string, tag = "1")]
42    pub id: ::prost::alloc::string::String,
43}
44#[derive(serde::Serialize, serde::Deserialize)]
45#[serde(rename_all = "snake_case")]
46#[derive(Clone, Copy, PartialEq, ::prost::Message)]
47pub struct TeamGroupId {
48    #[prost(uint32, tag = "1")]
49    pub id: u32,
50}
51#[derive(serde::Serialize, serde::Deserialize)]
52#[serde(rename_all = "snake_case")]
53#[derive(Clone, Copy, PartialEq, ::prost::Message)]
54pub struct ScopeId {
55    #[prost(uint32, tag = "1")]
56    pub id: u32,
57}
58#[derive(serde::Serialize, serde::Deserialize)]
59#[serde(rename_all = "snake_case")]
60#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
61#[repr(i32)]
62pub enum Resource {
63    Unspecified = 0,
64    Coralogix = 1,
65    Kibana = 2,
66    Apiaccess = 3,
67    Grafana = 4,
68    Accountmanager = 5,
69    Groups = 6,
70    Alerts = 7,
71    Webhooks = 8,
72    LogsDataingress = 9,
73    SpansDataingress = 10,
74    MetricsDataingress = 11,
75    Apikeys = 12,
76    Team = 13,
77    TeamInvites = 14,
78    Sso = 15,
79    QueryDataLegacy = 16,
80    ApiKeyLegacy = 17,
81    SnowbitSetup = 18,
82    SnowbitOverview = 19,
83    SnowbitCspm = 20,
84    SnowbitResourceExplorer = 21,
85    SnowbitSspm = 22,
86    SnowbitAlerts = 23,
87    CloudSecurity = 24,
88    UserApiKeys = 25,
89    TeamApiKeys = 26,
90    TeamApiKeysSecuritySettings = 27,
91    TeamDashboards = 28,
92    CloudMetadataEnrichment = 29,
93    GeoEnrichment = 30,
94    GlobalMapping = 31,
95    K8sInfraMonitoring = 32,
96    SecurityEnrichment = 33,
97    Serverless = 34,
98    TeamCustomEnrichment = 35,
99    Jaeger = 36,
100    ServiceMap = 37,
101    SpansDataAnalyticsHigh = 38,
102    SpansDataApiHigh = 39,
103    SpansDataSetupHigh = 40,
104    TeamActions = 41,
105    TeamAuditing = 42,
106    TeamPayAsYouGo = 43,
107    TeamPayments = 44,
108    TeamSlackNotifications = 45,
109    UserActions = 46,
110    UserEmailNotifications = 47,
111    VersionBenchmarksReports = 48,
112    AlertsMap = 49,
113    CloudMetadataIngress = 50,
114    ContextualData = 51,
115    DataMap = 52,
116    DataUsage = 53,
117    Extensions = 54,
118    HomeDashboard = 55,
119    Incidents = 56,
120    Integrations = 57,
121    LegacyArchiveQueries = 58,
122    Livetail = 59,
123    LogsDataAnalyticsHigh = 60,
124    LogsDataAnalyticsLow = 61,
125    LogsDataApiHigh = 62,
126    LogsDataApiLow = 63,
127    LogsDataSetupHigh = 64,
128    LogsDataSetupLow = 65,
129    LogsEvents2metrics = 66,
130    LogsTco = 67,
131    MetricsDataAnalyticsHigh = 68,
132    MetricsDataAnalyticsLow = 69,
133    MetricsDataApiHigh = 70,
134    MetricsDataApiLow = 71,
135    MetricsDataSetupHigh = 72,
136    MetricsDataSetupLow = 73,
137    MetricsRecordingRules = 74,
138    MetricsTco = 75,
139    OpensearchDashboards = 76,
140    OrgAdmins = 77,
141    OrgQuota = 78,
142    OrgSettings = 79,
143    OrgTeams = 80,
144    OutboundWebhooks = 81,
145    ParsingRules = 82,
146    Rum = 83,
147    RumIngress = 84,
148    ServiceCatalog = 85,
149    SpansDataAnalyticsLow = 86,
150    SpansDataApiLow = 87,
151    TracesDataIngress = 88,
152    SpansDataSetupLow = 89,
153    SpansEvents2metrics = 90,
154    SpansTco = 91,
155    TeamDomain = 92,
156    TeamGroups = 93,
157    TeamIpAccess = 94,
158    TeamMembers = 95,
159    TeamRoles = 96,
160    TeamSavedViews = 97,
161    TeamScim = 98,
162    TeamSessions = 99,
163    TeamSso = 100,
164    UserDashboards = 101,
165    UserLegacyLogsQueryApiKeys = 102,
166    UserLegacyOtherApiKeys = 103,
167    UserSavedViews = 104,
168    UserSettings = 105,
169    VersionBenchmarkTags = 106,
170    SourceMapping = 107,
171    SetupCorrelation = 108,
172    LogsAlerts = 109,
173    SpansAlerts = 110,
174    MetricsAlerts = 111,
175    SuppressionRules = 112,
176    UserAuthInfo = 113,
177    TeamScopes = 114,
178    TeamQuota = 115,
179    RumTeamSavedFilter = 116,
180    RumUserSavedFilter = 117,
181    Investigations = 118,
182    DataIngestApiKeys = 119,
183    PersonalCustomApiKeys = 120,
184    TeamCustomApiKeys = 121,
185    LogsDataOutSetup = 122,
186    DataprimeAiQueryAssistant = 123,
187    TeamLandingPage = 124,
188    ResourceCatalog = 125,
189    TeamAlertsSettings = 126,
190    TeamAiSettings = 127,
191    NotificationCenterConnectors = 128,
192    NotificationCenterPresets = 129,
193    HideErrors = 130,
194    RumSettings = 131,
195    SessionRecording = 132,
196    NotificationCenterRouters = 133,
197    ProfilesDataIngress = 134,
198    AiAppCatalog = 135,
199    AiAppDiscovery = 136,
200    AiAppEvaluators = 137,
201    AiOverview = 138,
202    AiSpm = 139,
203    LogsReservedFields = 140,
204    ProfilesCpuProfiles = 141,
205    ProfilesDebugSymbols = 142,
206    SloMgmtAlerts = 143,
207    Slo = 144,
208}
209impl Resource {
210    /// String value of the enum field names used in the ProtoBuf definition.
211    ///
212    /// The values are not transformed in any way and thus are considered stable
213    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
214    pub fn as_str_name(&self) -> &'static str {
215        match self {
216            Self::Unspecified => "RESOURCE_UNSPECIFIED",
217            Self::Coralogix => "RESOURCE_CORALOGIX",
218            Self::Kibana => "RESOURCE_KIBANA",
219            Self::Apiaccess => "RESOURCE_APIACCESS",
220            Self::Grafana => "RESOURCE_GRAFANA",
221            Self::Accountmanager => "RESOURCE_ACCOUNTMANAGER",
222            Self::Groups => "RESOURCE_GROUPS",
223            Self::Alerts => "RESOURCE_ALERTS",
224            Self::Webhooks => "RESOURCE_WEBHOOKS",
225            Self::LogsDataingress => "RESOURCE_LOGS_DATAINGRESS",
226            Self::SpansDataingress => "RESOURCE_SPANS_DATAINGRESS",
227            Self::MetricsDataingress => "RESOURCE_METRICS_DATAINGRESS",
228            Self::Apikeys => "RESOURCE_APIKEYS",
229            Self::Team => "RESOURCE_TEAM",
230            Self::TeamInvites => "RESOURCE_TEAM_INVITES",
231            Self::Sso => "RESOURCE_SSO",
232            Self::QueryDataLegacy => "RESOURCE_QUERY_DATA_LEGACY",
233            Self::ApiKeyLegacy => "RESOURCE_API_KEY_LEGACY",
234            Self::SnowbitSetup => "RESOURCE_SNOWBIT_SETUP",
235            Self::SnowbitOverview => "RESOURCE_SNOWBIT_OVERVIEW",
236            Self::SnowbitCspm => "RESOURCE_SNOWBIT_CSPM",
237            Self::SnowbitResourceExplorer => "RESOURCE_SNOWBIT_RESOURCE_EXPLORER",
238            Self::SnowbitSspm => "RESOURCE_SNOWBIT_SSPM",
239            Self::SnowbitAlerts => "RESOURCE_SNOWBIT_ALERTS",
240            Self::CloudSecurity => "RESOURCE_CLOUD_SECURITY",
241            Self::UserApiKeys => "RESOURCE_USER_API_KEYS",
242            Self::TeamApiKeys => "RESOURCE_TEAM_API_KEYS",
243            Self::TeamApiKeysSecuritySettings => {
244                "RESOURCE_TEAM_API_KEYS_SECURITY_SETTINGS"
245            }
246            Self::TeamDashboards => "RESOURCE_TEAM_DASHBOARDS",
247            Self::CloudMetadataEnrichment => "RESOURCE_CLOUD_METADATA_ENRICHMENT",
248            Self::GeoEnrichment => "RESOURCE_GEO_ENRICHMENT",
249            Self::GlobalMapping => "RESOURCE_GLOBAL_MAPPING",
250            Self::K8sInfraMonitoring => "RESOURCE_K8S_INFRA_MONITORING",
251            Self::SecurityEnrichment => "RESOURCE_SECURITY_ENRICHMENT",
252            Self::Serverless => "RESOURCE_SERVERLESS",
253            Self::TeamCustomEnrichment => "RESOURCE_TEAM_CUSTOM_ENRICHMENT",
254            Self::Jaeger => "RESOURCE_JAEGER",
255            Self::ServiceMap => "RESOURCE_SERVICE_MAP",
256            Self::SpansDataAnalyticsHigh => "RESOURCE_SPANS_DATA_ANALYTICS_HIGH",
257            Self::SpansDataApiHigh => "RESOURCE_SPANS_DATA_API_HIGH",
258            Self::SpansDataSetupHigh => "RESOURCE_SPANS_DATA_SETUP_HIGH",
259            Self::TeamActions => "RESOURCE_TEAM_ACTIONS",
260            Self::TeamAuditing => "RESOURCE_TEAM_AUDITING",
261            Self::TeamPayAsYouGo => "RESOURCE_TEAM_PAY_AS_YOU_GO",
262            Self::TeamPayments => "RESOURCE_TEAM_PAYMENTS",
263            Self::TeamSlackNotifications => "RESOURCE_TEAM_SLACK_NOTIFICATIONS",
264            Self::UserActions => "RESOURCE_USER_ACTIONS",
265            Self::UserEmailNotifications => "RESOURCE_USER_EMAIL_NOTIFICATIONS",
266            Self::VersionBenchmarksReports => "RESOURCE_VERSION_BENCHMARKS_REPORTS",
267            Self::AlertsMap => "RESOURCE_ALERTS_MAP",
268            Self::CloudMetadataIngress => "RESOURCE_CLOUD_METADATA_INGRESS",
269            Self::ContextualData => "RESOURCE_CONTEXTUAL_DATA",
270            Self::DataMap => "RESOURCE_DATA_MAP",
271            Self::DataUsage => "RESOURCE_DATA_USAGE",
272            Self::Extensions => "RESOURCE_EXTENSIONS",
273            Self::HomeDashboard => "RESOURCE_HOME_DASHBOARD",
274            Self::Incidents => "RESOURCE_INCIDENTS",
275            Self::Integrations => "RESOURCE_INTEGRATIONS",
276            Self::LegacyArchiveQueries => "RESOURCE_LEGACY_ARCHIVE_QUERIES",
277            Self::Livetail => "RESOURCE_LIVETAIL",
278            Self::LogsDataAnalyticsHigh => "RESOURCE_LOGS_DATA_ANALYTICS_HIGH",
279            Self::LogsDataAnalyticsLow => "RESOURCE_LOGS_DATA_ANALYTICS_LOW",
280            Self::LogsDataApiHigh => "RESOURCE_LOGS_DATA_API_HIGH",
281            Self::LogsDataApiLow => "RESOURCE_LOGS_DATA_API_LOW",
282            Self::LogsDataSetupHigh => "RESOURCE_LOGS_DATA_SETUP_HIGH",
283            Self::LogsDataSetupLow => "RESOURCE_LOGS_DATA_SETUP_LOW",
284            Self::LogsEvents2metrics => "RESOURCE_LOGS_EVENTS2METRICS",
285            Self::LogsTco => "RESOURCE_LOGS_TCO",
286            Self::MetricsDataAnalyticsHigh => "RESOURCE_METRICS_DATA_ANALYTICS_HIGH",
287            Self::MetricsDataAnalyticsLow => "RESOURCE_METRICS_DATA_ANALYTICS_LOW",
288            Self::MetricsDataApiHigh => "RESOURCE_METRICS_DATA_API_HIGH",
289            Self::MetricsDataApiLow => "RESOURCE_METRICS_DATA_API_LOW",
290            Self::MetricsDataSetupHigh => "RESOURCE_METRICS_DATA_SETUP_HIGH",
291            Self::MetricsDataSetupLow => "RESOURCE_METRICS_DATA_SETUP_LOW",
292            Self::MetricsRecordingRules => "RESOURCE_METRICS_RECORDING_RULES",
293            Self::MetricsTco => "RESOURCE_METRICS_TCO",
294            Self::OpensearchDashboards => "RESOURCE_OPENSEARCH_DASHBOARDS",
295            Self::OrgAdmins => "RESOURCE_ORG_ADMINS",
296            Self::OrgQuota => "RESOURCE_ORG_QUOTA",
297            Self::OrgSettings => "RESOURCE_ORG_SETTINGS",
298            Self::OrgTeams => "RESOURCE_ORG_TEAMS",
299            Self::OutboundWebhooks => "RESOURCE_OUTBOUND_WEBHOOKS",
300            Self::ParsingRules => "RESOURCE_PARSING_RULES",
301            Self::Rum => "RESOURCE_RUM",
302            Self::RumIngress => "RESOURCE_RUM_INGRESS",
303            Self::ServiceCatalog => "RESOURCE_SERVICE_CATALOG",
304            Self::SpansDataAnalyticsLow => "RESOURCE_SPANS_DATA_ANALYTICS_LOW",
305            Self::SpansDataApiLow => "RESOURCE_SPANS_DATA_API_LOW",
306            Self::TracesDataIngress => "RESOURCE_TRACES_DATA_INGRESS",
307            Self::SpansDataSetupLow => "RESOURCE_SPANS_DATA_SETUP_LOW",
308            Self::SpansEvents2metrics => "RESOURCE_SPANS_EVENTS2METRICS",
309            Self::SpansTco => "RESOURCE_SPANS_TCO",
310            Self::TeamDomain => "RESOURCE_TEAM_DOMAIN",
311            Self::TeamGroups => "RESOURCE_TEAM_GROUPS",
312            Self::TeamIpAccess => "RESOURCE_TEAM_IP_ACCESS",
313            Self::TeamMembers => "RESOURCE_TEAM_MEMBERS",
314            Self::TeamRoles => "RESOURCE_TEAM_ROLES",
315            Self::TeamSavedViews => "RESOURCE_TEAM_SAVED_VIEWS",
316            Self::TeamScim => "RESOURCE_TEAM_SCIM",
317            Self::TeamSessions => "RESOURCE_TEAM_SESSIONS",
318            Self::TeamSso => "RESOURCE_TEAM_SSO",
319            Self::UserDashboards => "RESOURCE_USER_DASHBOARDS",
320            Self::UserLegacyLogsQueryApiKeys => {
321                "RESOURCE_USER_LEGACY_LOGS_QUERY_API_KEYS"
322            }
323            Self::UserLegacyOtherApiKeys => "RESOURCE_USER_LEGACY_OTHER_API_KEYS",
324            Self::UserSavedViews => "RESOURCE_USER_SAVED_VIEWS",
325            Self::UserSettings => "RESOURCE_USER_SETTINGS",
326            Self::VersionBenchmarkTags => "RESOURCE_VERSION_BENCHMARK_TAGS",
327            Self::SourceMapping => "RESOURCE_SOURCE_MAPPING",
328            Self::SetupCorrelation => "RESOURCE_SETUP_CORRELATION",
329            Self::LogsAlerts => "RESOURCE_LOGS_ALERTS",
330            Self::SpansAlerts => "RESOURCE_SPANS_ALERTS",
331            Self::MetricsAlerts => "RESOURCE_METRICS_ALERTS",
332            Self::SuppressionRules => "RESOURCE_SUPPRESSION_RULES",
333            Self::UserAuthInfo => "RESOURCE_USER_AUTH_INFO",
334            Self::TeamScopes => "RESOURCE_TEAM_SCOPES",
335            Self::TeamQuota => "RESOURCE_TEAM_QUOTA",
336            Self::RumTeamSavedFilter => "RESOURCE_RUM_TEAM_SAVED_FILTER",
337            Self::RumUserSavedFilter => "RESOURCE_RUM_USER_SAVED_FILTER",
338            Self::Investigations => "RESOURCE_INVESTIGATIONS",
339            Self::DataIngestApiKeys => "RESOURCE_DATA_INGEST_API_KEYS",
340            Self::PersonalCustomApiKeys => "RESOURCE_PERSONAL_CUSTOM_API_KEYS",
341            Self::TeamCustomApiKeys => "RESOURCE_TEAM_CUSTOM_API_KEYS",
342            Self::LogsDataOutSetup => "RESOURCE_LOGS_DATA_OUT_SETUP",
343            Self::DataprimeAiQueryAssistant => "RESOURCE_DATAPRIME_AI_QUERY_ASSISTANT",
344            Self::TeamLandingPage => "RESOURCE_TEAM_LANDING_PAGE",
345            Self::ResourceCatalog => "RESOURCE_RESOURCE_CATALOG",
346            Self::TeamAlertsSettings => "RESOURCE_TEAM_ALERTS_SETTINGS",
347            Self::TeamAiSettings => "RESOURCE_TEAM_AI_SETTINGS",
348            Self::NotificationCenterConnectors => {
349                "RESOURCE_NOTIFICATION_CENTER_CONNECTORS"
350            }
351            Self::NotificationCenterPresets => "RESOURCE_NOTIFICATION_CENTER_PRESETS",
352            Self::HideErrors => "RESOURCE_HIDE_ERRORS",
353            Self::RumSettings => "RESOURCE_RUM_SETTINGS",
354            Self::SessionRecording => "RESOURCE_SESSION_RECORDING",
355            Self::NotificationCenterRouters => "RESOURCE_NOTIFICATION_CENTER_ROUTERS",
356            Self::ProfilesDataIngress => "RESOURCE_PROFILES_DATA_INGRESS",
357            Self::AiAppCatalog => "RESOURCE_AI_APP_CATALOG",
358            Self::AiAppDiscovery => "RESOURCE_AI_APP_DISCOVERY",
359            Self::AiAppEvaluators => "RESOURCE_AI_APP_EVALUATORS",
360            Self::AiOverview => "RESOURCE_AI_OVERVIEW",
361            Self::AiSpm => "RESOURCE_AI_SPM",
362            Self::LogsReservedFields => "RESOURCE_LOGS_RESERVED_FIELDS",
363            Self::ProfilesCpuProfiles => "RESOURCE_PROFILES_CPU_PROFILES",
364            Self::ProfilesDebugSymbols => "RESOURCE_PROFILES_DEBUG_SYMBOLS",
365            Self::SloMgmtAlerts => "RESOURCE_SLO_MGMT_ALERTS",
366            Self::Slo => "RESOURCE_SLO",
367        }
368    }
369    /// Creates an enum from field names used in the ProtoBuf definition.
370    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
371        match value {
372            "RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
373            "RESOURCE_CORALOGIX" => Some(Self::Coralogix),
374            "RESOURCE_KIBANA" => Some(Self::Kibana),
375            "RESOURCE_APIACCESS" => Some(Self::Apiaccess),
376            "RESOURCE_GRAFANA" => Some(Self::Grafana),
377            "RESOURCE_ACCOUNTMANAGER" => Some(Self::Accountmanager),
378            "RESOURCE_GROUPS" => Some(Self::Groups),
379            "RESOURCE_ALERTS" => Some(Self::Alerts),
380            "RESOURCE_WEBHOOKS" => Some(Self::Webhooks),
381            "RESOURCE_LOGS_DATAINGRESS" => Some(Self::LogsDataingress),
382            "RESOURCE_SPANS_DATAINGRESS" => Some(Self::SpansDataingress),
383            "RESOURCE_METRICS_DATAINGRESS" => Some(Self::MetricsDataingress),
384            "RESOURCE_APIKEYS" => Some(Self::Apikeys),
385            "RESOURCE_TEAM" => Some(Self::Team),
386            "RESOURCE_TEAM_INVITES" => Some(Self::TeamInvites),
387            "RESOURCE_SSO" => Some(Self::Sso),
388            "RESOURCE_QUERY_DATA_LEGACY" => Some(Self::QueryDataLegacy),
389            "RESOURCE_API_KEY_LEGACY" => Some(Self::ApiKeyLegacy),
390            "RESOURCE_SNOWBIT_SETUP" => Some(Self::SnowbitSetup),
391            "RESOURCE_SNOWBIT_OVERVIEW" => Some(Self::SnowbitOverview),
392            "RESOURCE_SNOWBIT_CSPM" => Some(Self::SnowbitCspm),
393            "RESOURCE_SNOWBIT_RESOURCE_EXPLORER" => Some(Self::SnowbitResourceExplorer),
394            "RESOURCE_SNOWBIT_SSPM" => Some(Self::SnowbitSspm),
395            "RESOURCE_SNOWBIT_ALERTS" => Some(Self::SnowbitAlerts),
396            "RESOURCE_CLOUD_SECURITY" => Some(Self::CloudSecurity),
397            "RESOURCE_USER_API_KEYS" => Some(Self::UserApiKeys),
398            "RESOURCE_TEAM_API_KEYS" => Some(Self::TeamApiKeys),
399            "RESOURCE_TEAM_API_KEYS_SECURITY_SETTINGS" => {
400                Some(Self::TeamApiKeysSecuritySettings)
401            }
402            "RESOURCE_TEAM_DASHBOARDS" => Some(Self::TeamDashboards),
403            "RESOURCE_CLOUD_METADATA_ENRICHMENT" => Some(Self::CloudMetadataEnrichment),
404            "RESOURCE_GEO_ENRICHMENT" => Some(Self::GeoEnrichment),
405            "RESOURCE_GLOBAL_MAPPING" => Some(Self::GlobalMapping),
406            "RESOURCE_K8S_INFRA_MONITORING" => Some(Self::K8sInfraMonitoring),
407            "RESOURCE_SECURITY_ENRICHMENT" => Some(Self::SecurityEnrichment),
408            "RESOURCE_SERVERLESS" => Some(Self::Serverless),
409            "RESOURCE_TEAM_CUSTOM_ENRICHMENT" => Some(Self::TeamCustomEnrichment),
410            "RESOURCE_JAEGER" => Some(Self::Jaeger),
411            "RESOURCE_SERVICE_MAP" => Some(Self::ServiceMap),
412            "RESOURCE_SPANS_DATA_ANALYTICS_HIGH" => Some(Self::SpansDataAnalyticsHigh),
413            "RESOURCE_SPANS_DATA_API_HIGH" => Some(Self::SpansDataApiHigh),
414            "RESOURCE_SPANS_DATA_SETUP_HIGH" => Some(Self::SpansDataSetupHigh),
415            "RESOURCE_TEAM_ACTIONS" => Some(Self::TeamActions),
416            "RESOURCE_TEAM_AUDITING" => Some(Self::TeamAuditing),
417            "RESOURCE_TEAM_PAY_AS_YOU_GO" => Some(Self::TeamPayAsYouGo),
418            "RESOURCE_TEAM_PAYMENTS" => Some(Self::TeamPayments),
419            "RESOURCE_TEAM_SLACK_NOTIFICATIONS" => Some(Self::TeamSlackNotifications),
420            "RESOURCE_USER_ACTIONS" => Some(Self::UserActions),
421            "RESOURCE_USER_EMAIL_NOTIFICATIONS" => Some(Self::UserEmailNotifications),
422            "RESOURCE_VERSION_BENCHMARKS_REPORTS" => Some(Self::VersionBenchmarksReports),
423            "RESOURCE_ALERTS_MAP" => Some(Self::AlertsMap),
424            "RESOURCE_CLOUD_METADATA_INGRESS" => Some(Self::CloudMetadataIngress),
425            "RESOURCE_CONTEXTUAL_DATA" => Some(Self::ContextualData),
426            "RESOURCE_DATA_MAP" => Some(Self::DataMap),
427            "RESOURCE_DATA_USAGE" => Some(Self::DataUsage),
428            "RESOURCE_EXTENSIONS" => Some(Self::Extensions),
429            "RESOURCE_HOME_DASHBOARD" => Some(Self::HomeDashboard),
430            "RESOURCE_INCIDENTS" => Some(Self::Incidents),
431            "RESOURCE_INTEGRATIONS" => Some(Self::Integrations),
432            "RESOURCE_LEGACY_ARCHIVE_QUERIES" => Some(Self::LegacyArchiveQueries),
433            "RESOURCE_LIVETAIL" => Some(Self::Livetail),
434            "RESOURCE_LOGS_DATA_ANALYTICS_HIGH" => Some(Self::LogsDataAnalyticsHigh),
435            "RESOURCE_LOGS_DATA_ANALYTICS_LOW" => Some(Self::LogsDataAnalyticsLow),
436            "RESOURCE_LOGS_DATA_API_HIGH" => Some(Self::LogsDataApiHigh),
437            "RESOURCE_LOGS_DATA_API_LOW" => Some(Self::LogsDataApiLow),
438            "RESOURCE_LOGS_DATA_SETUP_HIGH" => Some(Self::LogsDataSetupHigh),
439            "RESOURCE_LOGS_DATA_SETUP_LOW" => Some(Self::LogsDataSetupLow),
440            "RESOURCE_LOGS_EVENTS2METRICS" => Some(Self::LogsEvents2metrics),
441            "RESOURCE_LOGS_TCO" => Some(Self::LogsTco),
442            "RESOURCE_METRICS_DATA_ANALYTICS_HIGH" => {
443                Some(Self::MetricsDataAnalyticsHigh)
444            }
445            "RESOURCE_METRICS_DATA_ANALYTICS_LOW" => Some(Self::MetricsDataAnalyticsLow),
446            "RESOURCE_METRICS_DATA_API_HIGH" => Some(Self::MetricsDataApiHigh),
447            "RESOURCE_METRICS_DATA_API_LOW" => Some(Self::MetricsDataApiLow),
448            "RESOURCE_METRICS_DATA_SETUP_HIGH" => Some(Self::MetricsDataSetupHigh),
449            "RESOURCE_METRICS_DATA_SETUP_LOW" => Some(Self::MetricsDataSetupLow),
450            "RESOURCE_METRICS_RECORDING_RULES" => Some(Self::MetricsRecordingRules),
451            "RESOURCE_METRICS_TCO" => Some(Self::MetricsTco),
452            "RESOURCE_OPENSEARCH_DASHBOARDS" => Some(Self::OpensearchDashboards),
453            "RESOURCE_ORG_ADMINS" => Some(Self::OrgAdmins),
454            "RESOURCE_ORG_QUOTA" => Some(Self::OrgQuota),
455            "RESOURCE_ORG_SETTINGS" => Some(Self::OrgSettings),
456            "RESOURCE_ORG_TEAMS" => Some(Self::OrgTeams),
457            "RESOURCE_OUTBOUND_WEBHOOKS" => Some(Self::OutboundWebhooks),
458            "RESOURCE_PARSING_RULES" => Some(Self::ParsingRules),
459            "RESOURCE_RUM" => Some(Self::Rum),
460            "RESOURCE_RUM_INGRESS" => Some(Self::RumIngress),
461            "RESOURCE_SERVICE_CATALOG" => Some(Self::ServiceCatalog),
462            "RESOURCE_SPANS_DATA_ANALYTICS_LOW" => Some(Self::SpansDataAnalyticsLow),
463            "RESOURCE_SPANS_DATA_API_LOW" => Some(Self::SpansDataApiLow),
464            "RESOURCE_TRACES_DATA_INGRESS" => Some(Self::TracesDataIngress),
465            "RESOURCE_SPANS_DATA_SETUP_LOW" => Some(Self::SpansDataSetupLow),
466            "RESOURCE_SPANS_EVENTS2METRICS" => Some(Self::SpansEvents2metrics),
467            "RESOURCE_SPANS_TCO" => Some(Self::SpansTco),
468            "RESOURCE_TEAM_DOMAIN" => Some(Self::TeamDomain),
469            "RESOURCE_TEAM_GROUPS" => Some(Self::TeamGroups),
470            "RESOURCE_TEAM_IP_ACCESS" => Some(Self::TeamIpAccess),
471            "RESOURCE_TEAM_MEMBERS" => Some(Self::TeamMembers),
472            "RESOURCE_TEAM_ROLES" => Some(Self::TeamRoles),
473            "RESOURCE_TEAM_SAVED_VIEWS" => Some(Self::TeamSavedViews),
474            "RESOURCE_TEAM_SCIM" => Some(Self::TeamScim),
475            "RESOURCE_TEAM_SESSIONS" => Some(Self::TeamSessions),
476            "RESOURCE_TEAM_SSO" => Some(Self::TeamSso),
477            "RESOURCE_USER_DASHBOARDS" => Some(Self::UserDashboards),
478            "RESOURCE_USER_LEGACY_LOGS_QUERY_API_KEYS" => {
479                Some(Self::UserLegacyLogsQueryApiKeys)
480            }
481            "RESOURCE_USER_LEGACY_OTHER_API_KEYS" => Some(Self::UserLegacyOtherApiKeys),
482            "RESOURCE_USER_SAVED_VIEWS" => Some(Self::UserSavedViews),
483            "RESOURCE_USER_SETTINGS" => Some(Self::UserSettings),
484            "RESOURCE_VERSION_BENCHMARK_TAGS" => Some(Self::VersionBenchmarkTags),
485            "RESOURCE_SOURCE_MAPPING" => Some(Self::SourceMapping),
486            "RESOURCE_SETUP_CORRELATION" => Some(Self::SetupCorrelation),
487            "RESOURCE_LOGS_ALERTS" => Some(Self::LogsAlerts),
488            "RESOURCE_SPANS_ALERTS" => Some(Self::SpansAlerts),
489            "RESOURCE_METRICS_ALERTS" => Some(Self::MetricsAlerts),
490            "RESOURCE_SUPPRESSION_RULES" => Some(Self::SuppressionRules),
491            "RESOURCE_USER_AUTH_INFO" => Some(Self::UserAuthInfo),
492            "RESOURCE_TEAM_SCOPES" => Some(Self::TeamScopes),
493            "RESOURCE_TEAM_QUOTA" => Some(Self::TeamQuota),
494            "RESOURCE_RUM_TEAM_SAVED_FILTER" => Some(Self::RumTeamSavedFilter),
495            "RESOURCE_RUM_USER_SAVED_FILTER" => Some(Self::RumUserSavedFilter),
496            "RESOURCE_INVESTIGATIONS" => Some(Self::Investigations),
497            "RESOURCE_DATA_INGEST_API_KEYS" => Some(Self::DataIngestApiKeys),
498            "RESOURCE_PERSONAL_CUSTOM_API_KEYS" => Some(Self::PersonalCustomApiKeys),
499            "RESOURCE_TEAM_CUSTOM_API_KEYS" => Some(Self::TeamCustomApiKeys),
500            "RESOURCE_LOGS_DATA_OUT_SETUP" => Some(Self::LogsDataOutSetup),
501            "RESOURCE_DATAPRIME_AI_QUERY_ASSISTANT" => {
502                Some(Self::DataprimeAiQueryAssistant)
503            }
504            "RESOURCE_TEAM_LANDING_PAGE" => Some(Self::TeamLandingPage),
505            "RESOURCE_RESOURCE_CATALOG" => Some(Self::ResourceCatalog),
506            "RESOURCE_TEAM_ALERTS_SETTINGS" => Some(Self::TeamAlertsSettings),
507            "RESOURCE_TEAM_AI_SETTINGS" => Some(Self::TeamAiSettings),
508            "RESOURCE_NOTIFICATION_CENTER_CONNECTORS" => {
509                Some(Self::NotificationCenterConnectors)
510            }
511            "RESOURCE_NOTIFICATION_CENTER_PRESETS" => {
512                Some(Self::NotificationCenterPresets)
513            }
514            "RESOURCE_HIDE_ERRORS" => Some(Self::HideErrors),
515            "RESOURCE_RUM_SETTINGS" => Some(Self::RumSettings),
516            "RESOURCE_SESSION_RECORDING" => Some(Self::SessionRecording),
517            "RESOURCE_NOTIFICATION_CENTER_ROUTERS" => {
518                Some(Self::NotificationCenterRouters)
519            }
520            "RESOURCE_PROFILES_DATA_INGRESS" => Some(Self::ProfilesDataIngress),
521            "RESOURCE_AI_APP_CATALOG" => Some(Self::AiAppCatalog),
522            "RESOURCE_AI_APP_DISCOVERY" => Some(Self::AiAppDiscovery),
523            "RESOURCE_AI_APP_EVALUATORS" => Some(Self::AiAppEvaluators),
524            "RESOURCE_AI_OVERVIEW" => Some(Self::AiOverview),
525            "RESOURCE_AI_SPM" => Some(Self::AiSpm),
526            "RESOURCE_LOGS_RESERVED_FIELDS" => Some(Self::LogsReservedFields),
527            "RESOURCE_PROFILES_CPU_PROFILES" => Some(Self::ProfilesCpuProfiles),
528            "RESOURCE_PROFILES_DEBUG_SYMBOLS" => Some(Self::ProfilesDebugSymbols),
529            "RESOURCE_SLO_MGMT_ALERTS" => Some(Self::SloMgmtAlerts),
530            "RESOURCE_SLO" => Some(Self::Slo),
531            _ => None,
532        }
533    }
534}
535#[derive(serde::Serialize, serde::Deserialize)]
536#[serde(rename_all = "snake_case")]
537#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
538#[repr(i32)]
539pub enum Action {
540    Unspecified = 0,
541    Admin = 1,
542    Operate = 2,
543    ViewOnly = 3,
544    Edit = 4,
545    Delete = 5,
546    Create = 6,
547    ChangeQuota = 7,
548    GenerateKey = 8,
549    Write = 9,
550    Manage = 10,
551    Read = 11,
552    ReadConfig = 12,
553    Deploy = 13,
554    CreateSecurityAlert = 14,
555    Update = 15,
556    Readdata = 16,
557    Updateconfig = 17,
558    Updatedata = 18,
559    View = 19,
560    Execute = 20,
561    Acknowledge = 21,
562    Assign = 22,
563    Close = 23,
564    Updateuserwidgets = 24,
565    Readmaps = 25,
566    Readpolicies = 26,
567    Readteamwidgets = 27,
568    Readuserwidgets = 28,
569    Reindex = 29,
570    Senddata = 30,
571    Snooze = 31,
572    Updatemaps = 32,
573    Updatepolicies = 33,
574    Updateteamwidgets = 34,
575    Readmapping = 35,
576    Readsliconfig = 36,
577    Updatefiltersconfig = 37,
578    Updatesliconfig = 38,
579    Uploadmapping = 39,
580    ReadDimensionsConfig = 40,
581    UpdateDimensionsConfig = 41,
582    ReadApdexConfig = 42,
583    UpdateApdexConfig = 43,
584    ManageConnectionToOrg = 44,
585    ReadGroups = 45,
586    GetDailyEmails = 46,
587    GetDataUsageWarnings = 47,
588    GetFlowAnomalies = 48,
589    GetSpikeAnomalies = 49,
590    ReadAll = 50,
591    UpdateAll = 51,
592    ReadSummary = 52,
593    Upload = 53,
594}
595impl Action {
596    /// String value of the enum field names used in the ProtoBuf definition.
597    ///
598    /// The values are not transformed in any way and thus are considered stable
599    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
600    pub fn as_str_name(&self) -> &'static str {
601        match self {
602            Self::Unspecified => "ACTION_UNSPECIFIED",
603            Self::Admin => "ACTION_ADMIN",
604            Self::Operate => "ACTION_OPERATE",
605            Self::ViewOnly => "ACTION_VIEW_ONLY",
606            Self::Edit => "ACTION_EDIT",
607            Self::Delete => "ACTION_DELETE",
608            Self::Create => "ACTION_CREATE",
609            Self::ChangeQuota => "ACTION_CHANGE_QUOTA",
610            Self::GenerateKey => "ACTION_GENERATE_KEY",
611            Self::Write => "ACTION_WRITE",
612            Self::Manage => "ACTION_MANAGE",
613            Self::Read => "ACTION_READ",
614            Self::ReadConfig => "ACTION_READ_CONFIG",
615            Self::Deploy => "ACTION_DEPLOY",
616            Self::CreateSecurityAlert => "ACTION_CREATE_SECURITY_ALERT",
617            Self::Update => "ACTION_UPDATE",
618            Self::Readdata => "ACTION_READDATA",
619            Self::Updateconfig => "ACTION_UPDATECONFIG",
620            Self::Updatedata => "ACTION_UPDATEDATA",
621            Self::View => "ACTION_VIEW",
622            Self::Execute => "ACTION_EXECUTE",
623            Self::Acknowledge => "ACTION_ACKNOWLEDGE",
624            Self::Assign => "ACTION_ASSIGN",
625            Self::Close => "ACTION_CLOSE",
626            Self::Updateuserwidgets => "ACTION_UPDATEUSERWIDGETS",
627            Self::Readmaps => "ACTION_READMAPS",
628            Self::Readpolicies => "ACTION_READPOLICIES",
629            Self::Readteamwidgets => "ACTION_READTEAMWIDGETS",
630            Self::Readuserwidgets => "ACTION_READUSERWIDGETS",
631            Self::Reindex => "ACTION_REINDEX",
632            Self::Senddata => "ACTION_SENDDATA",
633            Self::Snooze => "ACTION_SNOOZE",
634            Self::Updatemaps => "ACTION_UPDATEMAPS",
635            Self::Updatepolicies => "ACTION_UPDATEPOLICIES",
636            Self::Updateteamwidgets => "ACTION_UPDATETEAMWIDGETS",
637            Self::Readmapping => "ACTION_READMAPPING",
638            Self::Readsliconfig => "ACTION_READSLICONFIG",
639            Self::Updatefiltersconfig => "ACTION_UPDATEFILTERSCONFIG",
640            Self::Updatesliconfig => "ACTION_UPDATESLICONFIG",
641            Self::Uploadmapping => "ACTION_UPLOADMAPPING",
642            Self::ReadDimensionsConfig => "ACTION_READ_DIMENSIONS_CONFIG",
643            Self::UpdateDimensionsConfig => "ACTION_UPDATE_DIMENSIONS_CONFIG",
644            Self::ReadApdexConfig => "ACTION_READ_APDEX_CONFIG",
645            Self::UpdateApdexConfig => "ACTION_UPDATE_APDEX_CONFIG",
646            Self::ManageConnectionToOrg => "ACTION_MANAGE_CONNECTION_TO_ORG",
647            Self::ReadGroups => "ACTION_READ_GROUPS",
648            Self::GetDailyEmails => "ACTION_GET_DAILY_EMAILS",
649            Self::GetDataUsageWarnings => "ACTION_GET_DATA_USAGE_WARNINGS",
650            Self::GetFlowAnomalies => "ACTION_GET_FLOW_ANOMALIES",
651            Self::GetSpikeAnomalies => "ACTION_GET_SPIKE_ANOMALIES",
652            Self::ReadAll => "ACTION_READ_ALL",
653            Self::UpdateAll => "ACTION_UPDATE_ALL",
654            Self::ReadSummary => "ACTION_READ_SUMMARY",
655            Self::Upload => "ACTION_UPLOAD",
656        }
657    }
658    /// Creates an enum from field names used in the ProtoBuf definition.
659    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
660        match value {
661            "ACTION_UNSPECIFIED" => Some(Self::Unspecified),
662            "ACTION_ADMIN" => Some(Self::Admin),
663            "ACTION_OPERATE" => Some(Self::Operate),
664            "ACTION_VIEW_ONLY" => Some(Self::ViewOnly),
665            "ACTION_EDIT" => Some(Self::Edit),
666            "ACTION_DELETE" => Some(Self::Delete),
667            "ACTION_CREATE" => Some(Self::Create),
668            "ACTION_CHANGE_QUOTA" => Some(Self::ChangeQuota),
669            "ACTION_GENERATE_KEY" => Some(Self::GenerateKey),
670            "ACTION_WRITE" => Some(Self::Write),
671            "ACTION_MANAGE" => Some(Self::Manage),
672            "ACTION_READ" => Some(Self::Read),
673            "ACTION_READ_CONFIG" => Some(Self::ReadConfig),
674            "ACTION_DEPLOY" => Some(Self::Deploy),
675            "ACTION_CREATE_SECURITY_ALERT" => Some(Self::CreateSecurityAlert),
676            "ACTION_UPDATE" => Some(Self::Update),
677            "ACTION_READDATA" => Some(Self::Readdata),
678            "ACTION_UPDATECONFIG" => Some(Self::Updateconfig),
679            "ACTION_UPDATEDATA" => Some(Self::Updatedata),
680            "ACTION_VIEW" => Some(Self::View),
681            "ACTION_EXECUTE" => Some(Self::Execute),
682            "ACTION_ACKNOWLEDGE" => Some(Self::Acknowledge),
683            "ACTION_ASSIGN" => Some(Self::Assign),
684            "ACTION_CLOSE" => Some(Self::Close),
685            "ACTION_UPDATEUSERWIDGETS" => Some(Self::Updateuserwidgets),
686            "ACTION_READMAPS" => Some(Self::Readmaps),
687            "ACTION_READPOLICIES" => Some(Self::Readpolicies),
688            "ACTION_READTEAMWIDGETS" => Some(Self::Readteamwidgets),
689            "ACTION_READUSERWIDGETS" => Some(Self::Readuserwidgets),
690            "ACTION_REINDEX" => Some(Self::Reindex),
691            "ACTION_SENDDATA" => Some(Self::Senddata),
692            "ACTION_SNOOZE" => Some(Self::Snooze),
693            "ACTION_UPDATEMAPS" => Some(Self::Updatemaps),
694            "ACTION_UPDATEPOLICIES" => Some(Self::Updatepolicies),
695            "ACTION_UPDATETEAMWIDGETS" => Some(Self::Updateteamwidgets),
696            "ACTION_READMAPPING" => Some(Self::Readmapping),
697            "ACTION_READSLICONFIG" => Some(Self::Readsliconfig),
698            "ACTION_UPDATEFILTERSCONFIG" => Some(Self::Updatefiltersconfig),
699            "ACTION_UPDATESLICONFIG" => Some(Self::Updatesliconfig),
700            "ACTION_UPLOADMAPPING" => Some(Self::Uploadmapping),
701            "ACTION_READ_DIMENSIONS_CONFIG" => Some(Self::ReadDimensionsConfig),
702            "ACTION_UPDATE_DIMENSIONS_CONFIG" => Some(Self::UpdateDimensionsConfig),
703            "ACTION_READ_APDEX_CONFIG" => Some(Self::ReadApdexConfig),
704            "ACTION_UPDATE_APDEX_CONFIG" => Some(Self::UpdateApdexConfig),
705            "ACTION_MANAGE_CONNECTION_TO_ORG" => Some(Self::ManageConnectionToOrg),
706            "ACTION_READ_GROUPS" => Some(Self::ReadGroups),
707            "ACTION_GET_DAILY_EMAILS" => Some(Self::GetDailyEmails),
708            "ACTION_GET_DATA_USAGE_WARNINGS" => Some(Self::GetDataUsageWarnings),
709            "ACTION_GET_FLOW_ANOMALIES" => Some(Self::GetFlowAnomalies),
710            "ACTION_GET_SPIKE_ANOMALIES" => Some(Self::GetSpikeAnomalies),
711            "ACTION_READ_ALL" => Some(Self::ReadAll),
712            "ACTION_UPDATE_ALL" => Some(Self::UpdateAll),
713            "ACTION_READ_SUMMARY" => Some(Self::ReadSummary),
714            "ACTION_UPLOAD" => Some(Self::Upload),
715            _ => None,
716        }
717    }
718}
719/// / A scope filter, given a filter term and a filter type is used to configure filter capabilities
720#[derive(serde::Serialize, serde::Deserialize)]
721#[serde(rename_all = "snake_case")]
722#[derive(Clone, PartialEq, ::prost::Message)]
723pub struct ScopeFilter {
724    /// / The filter term to use as a matching reference.
725    #[prost(string, tag = "1")]
726    pub term: ::prost::alloc::string::String,
727    /// / The filter type. i.e. given a term prod and filter type FilterType.STARTS_WITH the string production will pass the filter.
728    #[prost(enumeration = "FilterType", tag = "2")]
729    pub filter_type: i32,
730}
731/// / Scope filters are currently possible to be defined for subsystems and applications
732#[derive(serde::Serialize, serde::Deserialize)]
733#[serde(rename_all = "snake_case")]
734#[derive(Clone, PartialEq, ::prost::Message)]
735pub struct ScopeFilters {
736    /// / List of subsystem scope filters
737    #[prost(message, repeated, tag = "1")]
738    pub subsystems: ::prost::alloc::vec::Vec<ScopeFilter>,
739    /// / List of applications scope filters
740    #[prost(message, repeated, tag = "2")]
741    pub applications: ::prost::alloc::vec::Vec<ScopeFilter>,
742}
743/// / A group scope has a list of filters for subsystems and applications. Used to filter traffic based on user defined rules.
744#[derive(serde::Serialize, serde::Deserialize)]
745#[serde(rename_all = "snake_case")]
746#[derive(Clone, PartialEq, ::prost::Message)]
747pub struct Scope {
748    /// / Unique scope identifier
749    #[prost(message, optional, tag = "1")]
750    pub id: ::core::option::Option<ScopeId>,
751    /// / The filters definition
752    #[prost(message, optional, tag = "2")]
753    pub filters: ::core::option::Option<ScopeFilters>,
754}
755/// / An user is an entity that is always part of a team and has an account associated with it
756#[derive(serde::Serialize, serde::Deserialize)]
757#[serde(rename_all = "snake_case")]
758#[derive(Clone, PartialEq, ::prost::Message)]
759pub struct User {
760    /// / Unique user id
761    #[prost(message, optional, tag = "1")]
762    pub user_id: ::core::option::Option<UserId>,
763    /// / Associated account id. An account can have many users.
764    #[prost(message, optional, tag = "2")]
765    pub user_account_id: ::core::option::Option<UserAccountId>,
766    /// / Unique username
767    #[prost(string, tag = "3")]
768    pub username: ::prost::alloc::string::String,
769    /// / User first name
770    #[prost(string, tag = "4")]
771    pub first_name: ::prost::alloc::string::String,
772    /// / User last name
773    #[prost(string, tag = "5")]
774    pub last_name: ::prost::alloc::string::String,
775    /// / User status: \[Active, Inactive\]
776    #[prost(enumeration = "UserStatus", tag = "6")]
777    pub status: i32,
778}
779/// / A group role. Each role has a collection of permissions associated with it. A group can have many roles.
780#[derive(serde::Serialize, serde::Deserialize)]
781#[serde(rename_all = "snake_case")]
782#[derive(Clone, PartialEq, ::prost::Message)]
783pub struct Role {
784    /// / Unique role identifier
785    #[prost(message, optional, tag = "1")]
786    pub role_id: ::core::option::Option<RoleId>,
787    /// / Unique role name
788    #[prost(string, tag = "2")]
789    pub name: ::prost::alloc::string::String,
790    #[prost(string, tag = "3")]
791    pub description: ::prost::alloc::string::String,
792}
793#[derive(serde::Serialize, serde::Deserialize)]
794#[serde(rename_all = "snake_case")]
795#[derive(Clone, PartialEq, ::prost::Message)]
796pub struct TeamGroupSummary {
797    #[prost(message, optional, tag = "1")]
798    pub id: ::core::option::Option<TeamGroupId>,
799    #[prost(string, tag = "2")]
800    pub name: ::prost::alloc::string::String,
801    #[prost(uint32, tag = "3")]
802    pub user_count: u32,
803}
804#[derive(serde::Serialize, serde::Deserialize)]
805#[serde(rename_all = "snake_case")]
806#[derive(Clone, PartialEq, ::prost::Message)]
807pub struct SystemRole {
808    #[prost(message, optional, tag = "1")]
809    pub role_id: ::core::option::Option<RoleId>,
810    #[prost(string, tag = "2")]
811    pub name: ::prost::alloc::string::String,
812    #[prost(string, tag = "3")]
813    pub description: ::prost::alloc::string::String,
814}
815#[derive(serde::Serialize, serde::Deserialize)]
816#[serde(rename_all = "snake_case")]
817#[derive(Clone, PartialEq, ::prost::Message)]
818pub struct CustomRole {
819    #[prost(message, optional, tag = "1")]
820    pub role_id: ::core::option::Option<RoleId>,
821    #[prost(string, tag = "2")]
822    pub name: ::prost::alloc::string::String,
823    #[prost(string, tag = "3")]
824    pub description: ::prost::alloc::string::String,
825    #[prost(message, optional, tag = "4")]
826    pub parent_role_id: ::core::option::Option<RoleId>,
827}
828#[derive(serde::Serialize, serde::Deserialize)]
829#[serde(rename_all = "snake_case")]
830#[derive(Clone, PartialEq, ::prost::Message)]
831pub struct RoleSummary {
832    #[prost(uint32, tag = "3")]
833    pub user_count: u32,
834    #[prost(message, repeated, tag = "4")]
835    pub groups: ::prost::alloc::vec::Vec<TeamGroupSummary>,
836    #[prost(message, repeated, tag = "5")]
837    pub permissions: ::prost::alloc::vec::Vec<PermissionMetadata>,
838    #[prost(oneof = "role_summary::Role", tags = "1, 2")]
839    pub role: ::core::option::Option<role_summary::Role>,
840}
841/// Nested message and enum types in `RoleSummary`.
842pub mod role_summary {
843    #[derive(serde::Serialize, serde::Deserialize)]
844    #[serde(rename_all = "snake_case")]
845    #[derive(Clone, PartialEq, ::prost::Oneof)]
846    pub enum Role {
847        #[prost(message, tag = "1")]
848        SystemRole(super::SystemRole),
849        #[prost(message, tag = "2")]
850        CustomRole(super::CustomRole),
851    }
852}
853/// / An organisation group
854#[derive(serde::Serialize, serde::Deserialize)]
855#[serde(rename_all = "snake_case")]
856#[derive(Clone, PartialEq, ::prost::Message)]
857pub struct OrgGroup {
858    /// / Unique organisation group identifier
859    #[prost(message, optional, tag = "1")]
860    pub org_group_id: ::core::option::Option<OrgGroupId>,
861    /// / Unique name
862    #[prost(string, tag = "2")]
863    pub name: ::prost::alloc::string::String,
864    /// / Organisation this group belongs to
865    #[prost(message, optional, tag = "3")]
866    pub org_id: ::core::option::Option<OrganizationId>,
867    /// / Associated organisation roles
868    #[prost(message, repeated, tag = "4")]
869    pub roles: ::prost::alloc::vec::Vec<Role>,
870}
871#[derive(serde::Serialize, serde::Deserialize)]
872#[serde(rename_all = "snake_case")]
873#[derive(Clone, PartialEq, ::prost::Message)]
874pub struct TeamGroup {
875    /// / Unique team group identifier
876    #[prost(message, optional, tag = "1")]
877    pub group_id: ::core::option::Option<TeamGroupId>,
878    /// / Unique name
879    #[prost(string, tag = "2")]
880    pub name: ::prost::alloc::string::String,
881    /// / Group description
882    #[prost(string, optional, tag = "3")]
883    pub description: ::core::option::Option<::prost::alloc::string::String>,
884    /// / Group external identifier. Applies if team is externally defined.
885    #[prost(string, optional, tag = "4")]
886    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
887    /// / Built in groups are not user made. They were created by the system.
888    #[prost(enumeration = "GroupOrigin", tag = "5")]
889    pub group_origin: i32,
890    /// / Team this group belongs to
891    #[prost(message, optional, tag = "6")]
892    pub team_id: ::core::option::Option<TeamId>,
893    /// / Associated team roles
894    #[prost(message, repeated, tag = "7")]
895    pub roles: ::prost::alloc::vec::Vec<Role>,
896    /// / Associated scope
897    #[prost(message, optional, tag = "8")]
898    pub scope: ::core::option::Option<Scope>,
899    #[prost(message, optional, tag = "9")]
900    pub created_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
901    #[prost(message, optional, tag = "10")]
902    pub updated_at: ::core::option::Option<::prost_wkt_types::Timestamp>,
903    #[prost(string, optional, tag = "11")]
904    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
905}
906#[derive(serde::Serialize, serde::Deserialize)]
907#[serde(rename_all = "snake_case")]
908#[derive(Clone, PartialEq, ::prost::Message)]
909pub struct PermissionGroupMetadata {
910    #[prost(enumeration = "super::models::v1::PermissionGroup", tag = "1")]
911    pub permission_group: i32,
912    #[prost(string, tag = "2")]
913    pub name: ::prost::alloc::string::String,
914    #[prost(string, tag = "3")]
915    pub description: ::prost::alloc::string::String,
916    #[prost(string, tag = "4")]
917    pub display_name: ::prost::alloc::string::String,
918}
919#[derive(serde::Serialize, serde::Deserialize)]
920#[serde(rename_all = "snake_case")]
921#[derive(Clone, PartialEq, ::prost::Message)]
922pub struct PermissionMetadata {
923    #[prost(enumeration = "super::models::v1::Permission", tag = "1")]
924    pub permission: i32,
925    #[prost(message, optional, tag = "2")]
926    pub permission_group: ::core::option::Option<PermissionGroupMetadata>,
927    #[prost(string, tag = "3")]
928    pub expression: ::prost::alloc::string::String,
929    #[prost(string, tag = "4")]
930    pub description: ::prost::alloc::string::String,
931    #[prost(enumeration = "Action", tag = "5")]
932    pub action: i32,
933    #[prost(enumeration = "Resource", tag = "6")]
934    pub resource: i32,
935    #[prost(string, tag = "7")]
936    pub doc_link: ::prost::alloc::string::String,
937    #[prost(string, tag = "8")]
938    pub explanation: ::prost::alloc::string::String,
939    #[prost(bool, tag = "9")]
940    pub is_send_data: bool,
941}
942/// / A filter type describes how to match a filter against an input string
943#[derive(serde::Serialize, serde::Deserialize)]
944#[serde(rename_all = "snake_case")]
945#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
946#[repr(i32)]
947pub enum FilterType {
948    Unspecified = 0,
949    /// / Matches if string starts with filter
950    StartsWith = 1,
951    /// / Matches if string ends with filter
952    EndsWith = 2,
953    /// / Matches if string contains filter
954    Contains = 3,
955    /// / Matches if string exactly matches filter
956    Exact = 4,
957}
958impl FilterType {
959    /// String value of the enum field names used in the ProtoBuf definition.
960    ///
961    /// The values are not transformed in any way and thus are considered stable
962    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
963    pub fn as_str_name(&self) -> &'static str {
964        match self {
965            Self::Unspecified => "FILTER_TYPE_UNSPECIFIED",
966            Self::StartsWith => "FILTER_TYPE_STARTS_WITH",
967            Self::EndsWith => "FILTER_TYPE_ENDS_WITH",
968            Self::Contains => "FILTER_TYPE_CONTAINS",
969            Self::Exact => "FILTER_TYPE_EXACT",
970        }
971    }
972    /// Creates an enum from field names used in the ProtoBuf definition.
973    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
974        match value {
975            "FILTER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
976            "FILTER_TYPE_STARTS_WITH" => Some(Self::StartsWith),
977            "FILTER_TYPE_ENDS_WITH" => Some(Self::EndsWith),
978            "FILTER_TYPE_CONTAINS" => Some(Self::Contains),
979            "FILTER_TYPE_EXACT" => Some(Self::Exact),
980            _ => None,
981        }
982    }
983}
984/// / User status
985#[derive(serde::Serialize, serde::Deserialize)]
986#[serde(rename_all = "snake_case")]
987#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
988#[repr(i32)]
989pub enum UserStatus {
990    Unspecified = 0,
991    /// / User is active
992    Active = 1,
993    /// / User is inactive
994    Inactive = 2,
995}
996impl UserStatus {
997    /// String value of the enum field names used in the ProtoBuf definition.
998    ///
999    /// The values are not transformed in any way and thus are considered stable
1000    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1001    pub fn as_str_name(&self) -> &'static str {
1002        match self {
1003            Self::Unspecified => "USER_STATUS_UNSPECIFIED",
1004            Self::Active => "USER_STATUS_ACTIVE",
1005            Self::Inactive => "USER_STATUS_INACTIVE",
1006        }
1007    }
1008    /// Creates an enum from field names used in the ProtoBuf definition.
1009    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1010        match value {
1011            "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1012            "USER_STATUS_ACTIVE" => Some(Self::Active),
1013            "USER_STATUS_INACTIVE" => Some(Self::Inactive),
1014            _ => None,
1015        }
1016    }
1017}
1018/// / Group origin defines in which circumstances the group was created.
1019#[derive(serde::Serialize, serde::Deserialize)]
1020#[serde(rename_all = "snake_case")]
1021#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1022#[repr(i32)]
1023pub enum GroupOrigin {
1024    Unspecified = 0,
1025    /// / A built in group is defined by the system and users are not able to alter them.
1026    BuiltIn = 1,
1027    /// / User defined or custom role.
1028    UserDefined = 2,
1029}
1030impl GroupOrigin {
1031    /// String value of the enum field names used in the ProtoBuf definition.
1032    ///
1033    /// The values are not transformed in any way and thus are considered stable
1034    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1035    pub fn as_str_name(&self) -> &'static str {
1036        match self {
1037            Self::Unspecified => "GROUP_ORIGIN_UNSPECIFIED",
1038            Self::BuiltIn => "GROUP_ORIGIN_BUILT_IN",
1039            Self::UserDefined => "GROUP_ORIGIN_USER_DEFINED",
1040        }
1041    }
1042    /// Creates an enum from field names used in the ProtoBuf definition.
1043    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1044        match value {
1045            "GROUP_ORIGIN_UNSPECIFIED" => Some(Self::Unspecified),
1046            "GROUP_ORIGIN_BUILT_IN" => Some(Self::BuiltIn),
1047            "GROUP_ORIGIN_USER_DEFINED" => Some(Self::UserDefined),
1048            _ => None,
1049        }
1050    }
1051}
1052/// / Get team group request
1053#[derive(serde::Serialize, serde::Deserialize)]
1054#[serde(rename_all = "snake_case")]
1055#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1056pub struct GetTeamGroupRequest {
1057    /// / Team group id
1058    #[prost(message, optional, tag = "1")]
1059    pub group_id: ::core::option::Option<TeamGroupId>,
1060}
1061/// / Get team group response
1062#[derive(serde::Serialize, serde::Deserialize)]
1063#[serde(rename_all = "snake_case")]
1064#[derive(Clone, PartialEq, ::prost::Message)]
1065pub struct GetTeamGroupResponse {
1066    /// / Team group
1067    #[prost(message, optional, tag = "1")]
1068    pub group: ::core::option::Option<TeamGroup>,
1069}
1070#[derive(serde::Serialize, serde::Deserialize)]
1071#[serde(rename_all = "snake_case")]
1072#[derive(Clone, PartialEq, ::prost::Message)]
1073pub struct GetTeamGroupByNameRequest {
1074    #[prost(string, tag = "1")]
1075    pub name: ::prost::alloc::string::String,
1076}
1077#[derive(serde::Serialize, serde::Deserialize)]
1078#[serde(rename_all = "snake_case")]
1079#[derive(Clone, PartialEq, ::prost::Message)]
1080pub struct GetTeamGroupByNameResponse {
1081    #[prost(message, optional, tag = "1")]
1082    pub group: ::core::option::Option<TeamGroup>,
1083}
1084/// / Get all team groups request
1085#[derive(serde::Serialize, serde::Deserialize)]
1086#[serde(rename_all = "snake_case")]
1087#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1088pub struct GetTeamGroupsRequest {
1089    /// / Team to fetch team groups for. If not set, fetches groups associated with logged in team
1090    /// / Bear in mind that an user can only fetch groups for logged in team. Unless you want to express this as a
1091    /// / validation of what the logged in team should be, this field can remain empty.
1092    #[prost(message, optional, tag = "1")]
1093    pub team_id: ::core::option::Option<TeamId>,
1094}
1095/// / Get all team groups response
1096#[derive(serde::Serialize, serde::Deserialize)]
1097#[serde(rename_all = "snake_case")]
1098#[derive(Clone, PartialEq, ::prost::Message)]
1099pub struct GetTeamGroupsResponse {
1100    /// / Groups associated with team
1101    #[prost(message, repeated, tag = "1")]
1102    pub groups: ::prost::alloc::vec::Vec<TeamGroup>,
1103}
1104/// / Create team group request
1105#[derive(serde::Serialize, serde::Deserialize)]
1106#[serde(rename_all = "snake_case")]
1107#[derive(Clone, PartialEq, ::prost::Message)]
1108pub struct CreateTeamGroupRequest {
1109    /// / Team group name
1110    #[prost(string, tag = "1")]
1111    pub name: ::prost::alloc::string::String,
1112    /// / Team which the group will be associated with. If not set, creates group and associates it with logged in team
1113    /// / Bear in mind that an user can only create team for logged in team. Unless you want to express this as a
1114    /// / validation of what the logged in team should be, this field can remain empty.
1115    #[prost(message, optional, tag = "2")]
1116    pub team_id: ::core::option::Option<TeamId>,
1117    /// / Team group description
1118    #[prost(string, optional, tag = "3")]
1119    pub description: ::core::option::Option<::prost::alloc::string::String>,
1120    /// / Team group external_id. Applies if team is externally defined.
1121    #[prost(string, optional, tag = "4")]
1122    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
1123    /// / Roles to associate with team group
1124    #[prost(message, repeated, tag = "5")]
1125    pub role_ids: ::prost::alloc::vec::Vec<RoleId>,
1126    /// / Users to associate with team group
1127    #[prost(message, repeated, tag = "6")]
1128    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
1129    /// / Optionally set team group scope filters
1130    #[prost(message, optional, tag = "7")]
1131    pub scope_filters: ::core::option::Option<ScopeFilters>,
1132    #[prost(string, optional, tag = "8")]
1133    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
1134}
1135/// / Create team group response
1136#[derive(serde::Serialize, serde::Deserialize)]
1137#[serde(rename_all = "snake_case")]
1138#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1139pub struct CreateTeamGroupResponse {
1140    /// / Team group id
1141    #[prost(message, optional, tag = "1")]
1142    pub group_id: ::core::option::Option<TeamGroupId>,
1143}
1144/// / Update team group request
1145#[derive(serde::Serialize, serde::Deserialize)]
1146#[serde(rename_all = "snake_case")]
1147#[derive(Clone, PartialEq, ::prost::Message)]
1148pub struct UpdateTeamGroupRequest {
1149    /// / Team group to be updated
1150    #[prost(message, optional, tag = "1")]
1151    pub group_id: ::core::option::Option<TeamGroupId>,
1152    /// / Updated team group name
1153    #[prost(string, tag = "2")]
1154    pub name: ::prost::alloc::string::String,
1155    /// / Updated team group description
1156    #[prost(string, optional, tag = "3")]
1157    pub description: ::core::option::Option<::prost::alloc::string::String>,
1158    /// / Updated team group external_id
1159    #[prost(string, optional, tag = "4")]
1160    pub external_id: ::core::option::Option<::prost::alloc::string::String>,
1161    /// / If set, new roles to associate with team group
1162    #[prost(message, optional, tag = "5")]
1163    pub role_updates: ::core::option::Option<update_team_group_request::RoleUpdates>,
1164    /// / If set, new users to associate with team group
1165    #[prost(message, optional, tag = "6")]
1166    pub user_updates: ::core::option::Option<update_team_group_request::UserUpdates>,
1167    /// / If set, updates new team group scope filters
1168    #[prost(message, optional, tag = "7")]
1169    pub scope_filters: ::core::option::Option<ScopeFilters>,
1170    /// / If set, updates new team group next gen scope
1171    #[prost(string, optional, tag = "8")]
1172    pub next_gen_scope_id: ::core::option::Option<::prost::alloc::string::String>,
1173}
1174/// Nested message and enum types in `UpdateTeamGroupRequest`.
1175pub mod update_team_group_request {
1176    /// / Specifies new roles to assign to a group removing previous ones
1177    #[derive(serde::Serialize, serde::Deserialize)]
1178    #[serde(rename_all = "snake_case")]
1179    #[derive(Clone, PartialEq, ::prost::Message)]
1180    pub struct RoleUpdates {
1181        /// / Roles to associate with a team group
1182        #[prost(message, repeated, tag = "1")]
1183        pub role_ids: ::prost::alloc::vec::Vec<super::RoleId>,
1184    }
1185    /// / Specifies new users to assign to a group removing previous ones
1186    #[derive(serde::Serialize, serde::Deserialize)]
1187    #[serde(rename_all = "snake_case")]
1188    #[derive(Clone, PartialEq, ::prost::Message)]
1189    pub struct UserUpdates {
1190        /// / Users to associate with a team group
1191        #[prost(message, repeated, tag = "1")]
1192        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
1193    }
1194}
1195/// / Update team group response
1196#[derive(serde::Serialize, serde::Deserialize)]
1197#[serde(rename_all = "snake_case")]
1198#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1199pub struct UpdateTeamGroupResponse {}
1200/// / Delete team group request
1201#[derive(serde::Serialize, serde::Deserialize)]
1202#[serde(rename_all = "snake_case")]
1203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1204pub struct DeleteTeamGroupRequest {
1205    /// / Team group id
1206    #[prost(message, optional, tag = "1")]
1207    pub group_id: ::core::option::Option<TeamGroupId>,
1208}
1209/// / Delete team group response
1210#[derive(serde::Serialize, serde::Deserialize)]
1211#[serde(rename_all = "snake_case")]
1212#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1213pub struct DeleteTeamGroupResponse {}
1214/// / Fetches all users linked with given team group
1215#[derive(serde::Serialize, serde::Deserialize)]
1216#[serde(rename_all = "snake_case")]
1217#[derive(Clone, PartialEq, ::prost::Message)]
1218pub struct GetGroupUsersRequest {
1219    /// / Team group id
1220    #[prost(message, optional, tag = "1")]
1221    pub group_id: ::core::option::Option<TeamGroupId>,
1222    /// / Pagination size. Defaults to 100 if empty
1223    #[prost(uint32, optional, tag = "2")]
1224    pub page_size: ::core::option::Option<u32>,
1225    /// / Optional pagination continuation token
1226    /// / Contains an encoded cursor
1227    #[prost(string, optional, tag = "3")]
1228    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
1229}
1230#[derive(serde::Serialize, serde::Deserialize)]
1231#[serde(rename_all = "snake_case")]
1232#[derive(Clone, PartialEq, ::prost::Message)]
1233pub struct GetGroupUsersResponse {
1234    #[prost(message, repeated, tag = "1")]
1235    pub users: ::prost::alloc::vec::Vec<User>,
1236    #[prost(oneof = "get_group_users_response::NextPage", tags = "2, 3")]
1237    pub next_page: ::core::option::Option<get_group_users_response::NextPage>,
1238}
1239/// Nested message and enum types in `GetGroupUsersResponse`.
1240pub mod get_group_users_response {
1241    #[derive(serde::Serialize, serde::Deserialize)]
1242    #[serde(rename_all = "snake_case")]
1243    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
1244    pub struct NoMorePages {}
1245    #[derive(serde::Serialize, serde::Deserialize)]
1246    #[serde(rename_all = "snake_case")]
1247    #[derive(Clone, PartialEq, ::prost::Message)]
1248    pub struct NextPageToken {
1249        #[prost(string, tag = "1")]
1250        pub next_page_token: ::prost::alloc::string::String,
1251    }
1252    #[derive(serde::Serialize, serde::Deserialize)]
1253    #[serde(rename_all = "snake_case")]
1254    #[derive(Clone, PartialEq, ::prost::Oneof)]
1255    pub enum NextPage {
1256        #[prost(message, tag = "2")]
1257        NoMorePages(NoMorePages),
1258        #[prost(message, tag = "3")]
1259        Token(NextPageToken),
1260    }
1261}
1262/// / Add users to an existing team group
1263#[derive(serde::Serialize, serde::Deserialize)]
1264#[serde(rename_all = "snake_case")]
1265#[derive(Clone, PartialEq, ::prost::Message)]
1266pub struct AddUsersToTeamGroupRequest {
1267    /// / Team group id to add users to
1268    #[prost(message, optional, tag = "1")]
1269    pub group_id: ::core::option::Option<TeamGroupId>,
1270    /// / Users to add to group
1271    #[prost(message, repeated, tag = "2")]
1272    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
1273}
1274/// / Add users to an existing team group response
1275#[derive(serde::Serialize, serde::Deserialize)]
1276#[serde(rename_all = "snake_case")]
1277#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1278pub struct AddUsersToTeamGroupResponse {
1279    /// / Team id to which given team group belongs
1280    #[prost(message, optional, tag = "1")]
1281    pub team_id: ::core::option::Option<TeamId>,
1282}
1283/// / Associate new users with groups in a team
1284/// / Allows to associate any number of users with any number of groups belonging to a team
1285#[derive(serde::Serialize, serde::Deserialize)]
1286#[serde(rename_all = "snake_case")]
1287#[derive(Clone, PartialEq, ::prost::Message)]
1288pub struct AddUsersToTeamGroupsRequest {
1289    #[prost(message, optional, tag = "1")]
1290    pub team_id: ::core::option::Option<TeamId>,
1291    #[prost(message, repeated, tag = "2")]
1292    pub add_users_to_group: ::prost::alloc::vec::Vec<
1293        add_users_to_team_groups_request::AddUsersToTeamGroup,
1294    >,
1295}
1296/// Nested message and enum types in `AddUsersToTeamGroupsRequest`.
1297pub mod add_users_to_team_groups_request {
1298    #[derive(serde::Serialize, serde::Deserialize)]
1299    #[serde(rename_all = "snake_case")]
1300    #[derive(Clone, PartialEq, ::prost::Message)]
1301    pub struct AddUsersToTeamGroup {
1302        /// / Team group id to add users to
1303        #[prost(message, optional, tag = "1")]
1304        pub group_id: ::core::option::Option<super::TeamGroupId>,
1305        /// / Users to add to group
1306        #[prost(message, repeated, tag = "2")]
1307        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
1308    }
1309}
1310#[derive(serde::Serialize, serde::Deserialize)]
1311#[serde(rename_all = "snake_case")]
1312#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1313pub struct AddUsersToTeamGroupsResponse {}
1314/// / Remove users from an existing team group
1315#[derive(serde::Serialize, serde::Deserialize)]
1316#[serde(rename_all = "snake_case")]
1317#[derive(Clone, PartialEq, ::prost::Message)]
1318pub struct RemoveUsersFromTeamGroupRequest {
1319    /// / Team group id to remove users from
1320    #[prost(message, optional, tag = "1")]
1321    pub group_id: ::core::option::Option<TeamGroupId>,
1322    /// / Users to remove to group
1323    #[prost(message, repeated, tag = "2")]
1324    pub user_ids: ::prost::alloc::vec::Vec<UserId>,
1325}
1326#[derive(serde::Serialize, serde::Deserialize)]
1327#[serde(rename_all = "snake_case")]
1328#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1329pub struct RemoveUsersFromTeamGroupResponse {}
1330/// / Remove users from groups in a team
1331/// / Allows the removal of any number of users and any number of groups belonging to a team
1332#[derive(serde::Serialize, serde::Deserialize)]
1333#[serde(rename_all = "snake_case")]
1334#[derive(Clone, PartialEq, ::prost::Message)]
1335pub struct RemoveUsersFromTeamGroupsRequest {
1336    #[prost(message, optional, tag = "1")]
1337    pub team_id: ::core::option::Option<TeamId>,
1338    #[prost(message, repeated, tag = "2")]
1339    pub remove_users_from_group: ::prost::alloc::vec::Vec<
1340        remove_users_from_team_groups_request::RemoveUsersFromTeamGroup,
1341    >,
1342}
1343/// Nested message and enum types in `RemoveUsersFromTeamGroupsRequest`.
1344pub mod remove_users_from_team_groups_request {
1345    #[derive(serde::Serialize, serde::Deserialize)]
1346    #[serde(rename_all = "snake_case")]
1347    #[derive(Clone, PartialEq, ::prost::Message)]
1348    pub struct RemoveUsersFromTeamGroup {
1349        /// / Team group id to remove users from
1350        #[prost(message, optional, tag = "1")]
1351        pub group_id: ::core::option::Option<super::TeamGroupId>,
1352        /// / Users to remove to group
1353        #[prost(message, repeated, tag = "2")]
1354        pub user_ids: ::prost::alloc::vec::Vec<super::UserId>,
1355    }
1356}
1357/// / Remove users from existing groups
1358#[derive(serde::Serialize, serde::Deserialize)]
1359#[serde(rename_all = "snake_case")]
1360#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1361pub struct RemoveUsersFromTeamGroupsResponse {}
1362/// / Set team group scope request
1363#[derive(serde::Serialize, serde::Deserialize)]
1364#[serde(rename_all = "snake_case")]
1365#[derive(Clone, PartialEq, ::prost::Message)]
1366pub struct SetTeamGroupScopeRequest {
1367    /// / Team group to set scope to
1368    #[prost(message, optional, tag = "1")]
1369    pub group_id: ::core::option::Option<TeamGroupId>,
1370    /// / team group scope filters
1371    #[prost(message, optional, tag = "2")]
1372    pub scope_filters: ::core::option::Option<ScopeFilters>,
1373}
1374/// / Set team group scope response
1375#[derive(serde::Serialize, serde::Deserialize)]
1376#[serde(rename_all = "snake_case")]
1377#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1378pub struct SetTeamGroupScopeResponse {
1379    /// / Created scope_id or 0 if already exists and was replaced.
1380    #[prost(message, optional, tag = "1")]
1381    pub scope_id: ::core::option::Option<ScopeId>,
1382}
1383/// / Get team group scope request
1384#[derive(serde::Serialize, serde::Deserialize)]
1385#[serde(rename_all = "snake_case")]
1386#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1387pub struct GetTeamGroupScopeRequest {
1388    /// / Team group to set scope to
1389    #[prost(message, optional, tag = "1")]
1390    pub group_id: ::core::option::Option<TeamGroupId>,
1391}
1392/// / Set team group scope response
1393#[derive(serde::Serialize, serde::Deserialize)]
1394#[serde(rename_all = "snake_case")]
1395#[derive(Clone, PartialEq, ::prost::Message)]
1396pub struct GetTeamGroupScopeResponse {
1397    /// / Scope if group has one set
1398    #[prost(message, optional, tag = "1")]
1399    pub scope: ::core::option::Option<Scope>,
1400}
1401/// Generated client implementations.
1402pub mod team_permissions_mgmt_service_client {
1403    #![allow(
1404        unused_variables,
1405        dead_code,
1406        missing_docs,
1407        clippy::wildcard_imports,
1408        clippy::let_unit_value,
1409    )]
1410    use tonic::codegen::*;
1411    use tonic::codegen::http::Uri;
1412    /// / Service for creating and managing team groups, roles, users and scopes.
1413    #[derive(Debug, Clone)]
1414    pub struct TeamPermissionsMgmtServiceClient<T> {
1415        inner: tonic::client::Grpc<T>,
1416    }
1417    impl TeamPermissionsMgmtServiceClient<tonic::transport::Channel> {
1418        /// Attempt to create a new client by connecting to a given endpoint.
1419        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1420        where
1421            D: TryInto<tonic::transport::Endpoint>,
1422            D::Error: Into<StdError>,
1423        {
1424            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1425            Ok(Self::new(conn))
1426        }
1427    }
1428    impl<T> TeamPermissionsMgmtServiceClient<T>
1429    where
1430        T: tonic::client::GrpcService<tonic::body::BoxBody>,
1431        T::Error: Into<StdError>,
1432        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1433        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1434    {
1435        pub fn new(inner: T) -> Self {
1436            let inner = tonic::client::Grpc::new(inner);
1437            Self { inner }
1438        }
1439        pub fn with_origin(inner: T, origin: Uri) -> Self {
1440            let inner = tonic::client::Grpc::with_origin(inner, origin);
1441            Self { inner }
1442        }
1443        pub fn with_interceptor<F>(
1444            inner: T,
1445            interceptor: F,
1446        ) -> TeamPermissionsMgmtServiceClient<InterceptedService<T, F>>
1447        where
1448            F: tonic::service::Interceptor,
1449            T::ResponseBody: Default,
1450            T: tonic::codegen::Service<
1451                http::Request<tonic::body::BoxBody>,
1452                Response = http::Response<
1453                    <T as tonic::client::GrpcService<tonic::body::BoxBody>>::ResponseBody,
1454                >,
1455            >,
1456            <T as tonic::codegen::Service<
1457                http::Request<tonic::body::BoxBody>,
1458            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1459        {
1460            TeamPermissionsMgmtServiceClient::new(
1461                InterceptedService::new(inner, interceptor),
1462            )
1463        }
1464        /// Compress requests with the given encoding.
1465        ///
1466        /// This requires the server to support it otherwise it might respond with an
1467        /// error.
1468        #[must_use]
1469        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1470            self.inner = self.inner.send_compressed(encoding);
1471            self
1472        }
1473        /// Enable decompressing responses.
1474        #[must_use]
1475        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1476            self.inner = self.inner.accept_compressed(encoding);
1477            self
1478        }
1479        /// Limits the maximum size of a decoded message.
1480        ///
1481        /// Default: `4MB`
1482        #[must_use]
1483        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1484            self.inner = self.inner.max_decoding_message_size(limit);
1485            self
1486        }
1487        /// Limits the maximum size of an encoded message.
1488        ///
1489        /// Default: `usize::MAX`
1490        #[must_use]
1491        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1492            self.inner = self.inner.max_encoding_message_size(limit);
1493            self
1494        }
1495        /// / Fetch team group for given team id
1496        pub async fn get_team_group(
1497            &mut self,
1498            request: impl tonic::IntoRequest<super::GetTeamGroupRequest>,
1499        ) -> std::result::Result<
1500            tonic::Response<super::GetTeamGroupResponse>,
1501            tonic::Status,
1502        > {
1503            self.inner
1504                .ready()
1505                .await
1506                .map_err(|e| {
1507                    tonic::Status::unknown(
1508                        format!("Service was not ready: {}", e.into()),
1509                    )
1510                })?;
1511            let codec = tonic::codec::ProstCodec::default();
1512            let path = http::uri::PathAndQuery::from_static(
1513                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroup",
1514            );
1515            let mut req = request.into_request();
1516            req.extensions_mut()
1517                .insert(
1518                    GrpcMethod::new(
1519                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1520                        "GetTeamGroup",
1521                    ),
1522                );
1523            self.inner.unary(req, path, codec).await
1524        }
1525        /// / Fetch team group by name for authenticated team id
1526        pub async fn get_team_group_by_name(
1527            &mut self,
1528            request: impl tonic::IntoRequest<super::GetTeamGroupByNameRequest>,
1529        ) -> std::result::Result<
1530            tonic::Response<super::GetTeamGroupByNameResponse>,
1531            tonic::Status,
1532        > {
1533            self.inner
1534                .ready()
1535                .await
1536                .map_err(|e| {
1537                    tonic::Status::unknown(
1538                        format!("Service was not ready: {}", e.into()),
1539                    )
1540                })?;
1541            let codec = tonic::codec::ProstCodec::default();
1542            let path = http::uri::PathAndQuery::from_static(
1543                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroupByName",
1544            );
1545            let mut req = request.into_request();
1546            req.extensions_mut()
1547                .insert(
1548                    GrpcMethod::new(
1549                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1550                        "GetTeamGroupByName",
1551                    ),
1552                );
1553            self.inner.unary(req, path, codec).await
1554        }
1555        /// / Fetches all team groups linked with team
1556        pub async fn get_team_groups(
1557            &mut self,
1558            request: impl tonic::IntoRequest<super::GetTeamGroupsRequest>,
1559        ) -> std::result::Result<
1560            tonic::Response<super::GetTeamGroupsResponse>,
1561            tonic::Status,
1562        > {
1563            self.inner
1564                .ready()
1565                .await
1566                .map_err(|e| {
1567                    tonic::Status::unknown(
1568                        format!("Service was not ready: {}", e.into()),
1569                    )
1570                })?;
1571            let codec = tonic::codec::ProstCodec::default();
1572            let path = http::uri::PathAndQuery::from_static(
1573                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroups",
1574            );
1575            let mut req = request.into_request();
1576            req.extensions_mut()
1577                .insert(
1578                    GrpcMethod::new(
1579                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1580                        "GetTeamGroups",
1581                    ),
1582                );
1583            self.inner.unary(req, path, codec).await
1584        }
1585        /// / Creates a new team group and optionally associates roles, users and a scope to it
1586        pub async fn create_team_group(
1587            &mut self,
1588            request: impl tonic::IntoRequest<super::CreateTeamGroupRequest>,
1589        ) -> std::result::Result<
1590            tonic::Response<super::CreateTeamGroupResponse>,
1591            tonic::Status,
1592        > {
1593            self.inner
1594                .ready()
1595                .await
1596                .map_err(|e| {
1597                    tonic::Status::unknown(
1598                        format!("Service was not ready: {}", e.into()),
1599                    )
1600                })?;
1601            let codec = tonic::codec::ProstCodec::default();
1602            let path = http::uri::PathAndQuery::from_static(
1603                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/CreateTeamGroup",
1604            );
1605            let mut req = request.into_request();
1606            req.extensions_mut()
1607                .insert(
1608                    GrpcMethod::new(
1609                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1610                        "CreateTeamGroup",
1611                    ),
1612                );
1613            self.inner.unary(req, path, codec).await
1614        }
1615        /// / Updates an existing team group details
1616        pub async fn update_team_group(
1617            &mut self,
1618            request: impl tonic::IntoRequest<super::UpdateTeamGroupRequest>,
1619        ) -> std::result::Result<
1620            tonic::Response<super::UpdateTeamGroupResponse>,
1621            tonic::Status,
1622        > {
1623            self.inner
1624                .ready()
1625                .await
1626                .map_err(|e| {
1627                    tonic::Status::unknown(
1628                        format!("Service was not ready: {}", e.into()),
1629                    )
1630                })?;
1631            let codec = tonic::codec::ProstCodec::default();
1632            let path = http::uri::PathAndQuery::from_static(
1633                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/UpdateTeamGroup",
1634            );
1635            let mut req = request.into_request();
1636            req.extensions_mut()
1637                .insert(
1638                    GrpcMethod::new(
1639                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1640                        "UpdateTeamGroup",
1641                    ),
1642                );
1643            self.inner.unary(req, path, codec).await
1644        }
1645        /// / Deletes an existing team group
1646        pub async fn delete_team_group(
1647            &mut self,
1648            request: impl tonic::IntoRequest<super::DeleteTeamGroupRequest>,
1649        ) -> std::result::Result<
1650            tonic::Response<super::DeleteTeamGroupResponse>,
1651            tonic::Status,
1652        > {
1653            self.inner
1654                .ready()
1655                .await
1656                .map_err(|e| {
1657                    tonic::Status::unknown(
1658                        format!("Service was not ready: {}", e.into()),
1659                    )
1660                })?;
1661            let codec = tonic::codec::ProstCodec::default();
1662            let path = http::uri::PathAndQuery::from_static(
1663                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/DeleteTeamGroup",
1664            );
1665            let mut req = request.into_request();
1666            req.extensions_mut()
1667                .insert(
1668                    GrpcMethod::new(
1669                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1670                        "DeleteTeamGroup",
1671                    ),
1672                );
1673            self.inner.unary(req, path, codec).await
1674        }
1675        /// / Fetches all users assigned to group
1676        pub async fn get_group_users(
1677            &mut self,
1678            request: impl tonic::IntoRequest<super::GetGroupUsersRequest>,
1679        ) -> std::result::Result<
1680            tonic::Response<super::GetGroupUsersResponse>,
1681            tonic::Status,
1682        > {
1683            self.inner
1684                .ready()
1685                .await
1686                .map_err(|e| {
1687                    tonic::Status::unknown(
1688                        format!("Service was not ready: {}", e.into()),
1689                    )
1690                })?;
1691            let codec = tonic::codec::ProstCodec::default();
1692            let path = http::uri::PathAndQuery::from_static(
1693                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetGroupUsers",
1694            );
1695            let mut req = request.into_request();
1696            req.extensions_mut()
1697                .insert(
1698                    GrpcMethod::new(
1699                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1700                        "GetGroupUsers",
1701                    ),
1702                );
1703            self.inner.unary(req, path, codec).await
1704        }
1705        /// / Add users to team groups
1706        pub async fn add_users_to_team_group(
1707            &mut self,
1708            request: impl tonic::IntoRequest<super::AddUsersToTeamGroupRequest>,
1709        ) -> std::result::Result<
1710            tonic::Response<super::AddUsersToTeamGroupResponse>,
1711            tonic::Status,
1712        > {
1713            self.inner
1714                .ready()
1715                .await
1716                .map_err(|e| {
1717                    tonic::Status::unknown(
1718                        format!("Service was not ready: {}", e.into()),
1719                    )
1720                })?;
1721            let codec = tonic::codec::ProstCodec::default();
1722            let path = http::uri::PathAndQuery::from_static(
1723                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/AddUsersToTeamGroup",
1724            );
1725            let mut req = request.into_request();
1726            req.extensions_mut()
1727                .insert(
1728                    GrpcMethod::new(
1729                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1730                        "AddUsersToTeamGroup",
1731                    ),
1732                );
1733            self.inner.unary(req, path, codec).await
1734        }
1735        /// / Bulk Add users to team groups
1736        pub async fn add_users_to_team_groups(
1737            &mut self,
1738            request: impl tonic::IntoRequest<super::AddUsersToTeamGroupsRequest>,
1739        ) -> std::result::Result<
1740            tonic::Response<super::AddUsersToTeamGroupsResponse>,
1741            tonic::Status,
1742        > {
1743            self.inner
1744                .ready()
1745                .await
1746                .map_err(|e| {
1747                    tonic::Status::unknown(
1748                        format!("Service was not ready: {}", e.into()),
1749                    )
1750                })?;
1751            let codec = tonic::codec::ProstCodec::default();
1752            let path = http::uri::PathAndQuery::from_static(
1753                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/AddUsersToTeamGroups",
1754            );
1755            let mut req = request.into_request();
1756            req.extensions_mut()
1757                .insert(
1758                    GrpcMethod::new(
1759                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1760                        "AddUsersToTeamGroups",
1761                    ),
1762                );
1763            self.inner.unary(req, path, codec).await
1764        }
1765        /// / Remove user accounts to organisation group
1766        pub async fn remove_users_from_team_group(
1767            &mut self,
1768            request: impl tonic::IntoRequest<super::RemoveUsersFromTeamGroupRequest>,
1769        ) -> std::result::Result<
1770            tonic::Response<super::RemoveUsersFromTeamGroupResponse>,
1771            tonic::Status,
1772        > {
1773            self.inner
1774                .ready()
1775                .await
1776                .map_err(|e| {
1777                    tonic::Status::unknown(
1778                        format!("Service was not ready: {}", e.into()),
1779                    )
1780                })?;
1781            let codec = tonic::codec::ProstCodec::default();
1782            let path = http::uri::PathAndQuery::from_static(
1783                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/RemoveUsersFromTeamGroup",
1784            );
1785            let mut req = request.into_request();
1786            req.extensions_mut()
1787                .insert(
1788                    GrpcMethod::new(
1789                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1790                        "RemoveUsersFromTeamGroup",
1791                    ),
1792                );
1793            self.inner.unary(req, path, codec).await
1794        }
1795        /// / Bulk Remove user accounts to organisation group
1796        pub async fn remove_users_from_team_groups(
1797            &mut self,
1798            request: impl tonic::IntoRequest<super::RemoveUsersFromTeamGroupsRequest>,
1799        ) -> std::result::Result<
1800            tonic::Response<super::RemoveUsersFromTeamGroupsResponse>,
1801            tonic::Status,
1802        > {
1803            self.inner
1804                .ready()
1805                .await
1806                .map_err(|e| {
1807                    tonic::Status::unknown(
1808                        format!("Service was not ready: {}", e.into()),
1809                    )
1810                })?;
1811            let codec = tonic::codec::ProstCodec::default();
1812            let path = http::uri::PathAndQuery::from_static(
1813                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/RemoveUsersFromTeamGroups",
1814            );
1815            let mut req = request.into_request();
1816            req.extensions_mut()
1817                .insert(
1818                    GrpcMethod::new(
1819                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1820                        "RemoveUsersFromTeamGroups",
1821                    ),
1822                );
1823            self.inner.unary(req, path, codec).await
1824        }
1825        /// / Sets team group scope. Replaces it if it already exists.
1826        pub async fn set_team_group_scope(
1827            &mut self,
1828            request: impl tonic::IntoRequest<super::SetTeamGroupScopeRequest>,
1829        ) -> std::result::Result<
1830            tonic::Response<super::SetTeamGroupScopeResponse>,
1831            tonic::Status,
1832        > {
1833            self.inner
1834                .ready()
1835                .await
1836                .map_err(|e| {
1837                    tonic::Status::unknown(
1838                        format!("Service was not ready: {}", e.into()),
1839                    )
1840                })?;
1841            let codec = tonic::codec::ProstCodec::default();
1842            let path = http::uri::PathAndQuery::from_static(
1843                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/SetTeamGroupScope",
1844            );
1845            let mut req = request.into_request();
1846            req.extensions_mut()
1847                .insert(
1848                    GrpcMethod::new(
1849                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1850                        "SetTeamGroupScope",
1851                    ),
1852                );
1853            self.inner.unary(req, path, codec).await
1854        }
1855        /// / Fetches team group scope
1856        pub async fn get_team_group_scope(
1857            &mut self,
1858            request: impl tonic::IntoRequest<super::GetTeamGroupScopeRequest>,
1859        ) -> std::result::Result<
1860            tonic::Response<super::GetTeamGroupScopeResponse>,
1861            tonic::Status,
1862        > {
1863            self.inner
1864                .ready()
1865                .await
1866                .map_err(|e| {
1867                    tonic::Status::unknown(
1868                        format!("Service was not ready: {}", e.into()),
1869                    )
1870                })?;
1871            let codec = tonic::codec::ProstCodec::default();
1872            let path = http::uri::PathAndQuery::from_static(
1873                "/com.coralogix.permissions.v1.TeamPermissionsMgmtService/GetTeamGroupScope",
1874            );
1875            let mut req = request.into_request();
1876            req.extensions_mut()
1877                .insert(
1878                    GrpcMethod::new(
1879                        "com.coralogix.permissions.v1.TeamPermissionsMgmtService",
1880                        "GetTeamGroupScope",
1881                    ),
1882                );
1883            self.inner.unary(req, path, codec).await
1884        }
1885    }
1886}