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