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