1#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7pub struct SubmitActionRequest {
8 #[prost(string, tag="1")]
11 pub delivery_id: ::prost::alloc::string::String,
12 #[prost(string, tag="2")]
15 pub action_id: ::prost::alloc::string::String,
16 #[prost(bytes="vec", tag="3")]
19 pub payload: ::prost::alloc::vec::Vec<u8>,
20}
21#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23pub struct SubmitActionResponse {
24 #[prost(bool, tag="1")]
26 pub success: bool,
27}
28#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
34pub struct ChannelEvent {
35 #[prost(string, tag="1")]
36 pub org_id: ::prost::alloc::string::String,
37 #[prost(string, tag="2")]
38 pub campaign_id: ::prost::alloc::string::String,
39 #[prost(string, tag="3")]
40 pub recipient_user_id: ::prost::alloc::string::String,
41 #[prost(enumeration="ChannelName", tag="4")]
42 pub channel: i32,
43 #[prost(enumeration="ChannelStepKind", tag="5")]
44 pub step_kind: i32,
45 #[prost(enumeration="ChannelEventStatus", tag="6")]
46 pub status: i32,
47 #[prost(enumeration="ChannelSkipReason", tag="7")]
49 pub skip_reason: i32,
50 #[prost(string, tag="8")]
52 pub provider_message_id: ::prost::alloc::string::String,
53 #[prost(int64, tag="9")]
56 pub cost_micros: i64,
57 #[prost(string, tag="10")]
60 pub metadata_json: ::prost::alloc::string::String,
61 #[prost(message, optional, tag="11")]
62 pub occurred_at: ::core::option::Option<::prost_types::Timestamp>,
63}
64#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
65pub struct RecordChannelEventRequest {
66 #[prost(message, optional, tag="1")]
67 pub event: ::core::option::Option<ChannelEvent>,
68}
69#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
70pub struct RecordChannelEventResponse {
71 #[prost(bool, tag="1")]
74 pub accepted: bool,
75 #[prost(string, tag="2")]
78 pub reason: ::prost::alloc::string::String,
79}
80#[derive(Clone, PartialEq, ::prost::Message)]
81pub struct RecordChannelEventBatchRequest {
82 #[prost(message, repeated, tag="1")]
83 pub events: ::prost::alloc::vec::Vec<ChannelEvent>,
84}
85#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
87pub struct RecordChannelEventBatchResult {
88 #[prost(bool, tag="1")]
89 pub accepted: bool,
90 #[prost(string, tag="2")]
91 pub reason: ::prost::alloc::string::String,
92}
93#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct RecordChannelEventBatchResponse {
95 #[prost(message, repeated, tag="1")]
96 pub results: ::prost::alloc::vec::Vec<RecordChannelEventBatchResult>,
97}
98#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
107#[repr(i32)]
108pub enum ChannelName {
109 Unspecified = 0,
110 Email = 1,
111 Webhook = 2,
112 Telegram = 3,
113 Slack = 4,
114 Sms = 5,
115 Whatsapp = 6,
116 MicrosoftTeams = 7,
117 Line = 8,
118 GoogleChat = 9,
119}
120impl ChannelName {
121 pub fn as_str_name(&self) -> &'static str {
126 match self {
127 Self::Unspecified => "CHANNEL_NAME_UNSPECIFIED",
128 Self::Email => "CHANNEL_NAME_EMAIL",
129 Self::Webhook => "CHANNEL_NAME_WEBHOOK",
130 Self::Telegram => "CHANNEL_NAME_TELEGRAM",
131 Self::Slack => "CHANNEL_NAME_SLACK",
132 Self::Sms => "CHANNEL_NAME_SMS",
133 Self::Whatsapp => "CHANNEL_NAME_WHATSAPP",
134 Self::MicrosoftTeams => "CHANNEL_NAME_MICROSOFT_TEAMS",
135 Self::Line => "CHANNEL_NAME_LINE",
136 Self::GoogleChat => "CHANNEL_NAME_GOOGLE_CHAT",
137 }
138 }
139 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
141 match value {
142 "CHANNEL_NAME_UNSPECIFIED" => Some(Self::Unspecified),
143 "CHANNEL_NAME_EMAIL" => Some(Self::Email),
144 "CHANNEL_NAME_WEBHOOK" => Some(Self::Webhook),
145 "CHANNEL_NAME_TELEGRAM" => Some(Self::Telegram),
146 "CHANNEL_NAME_SLACK" => Some(Self::Slack),
147 "CHANNEL_NAME_SMS" => Some(Self::Sms),
148 "CHANNEL_NAME_WHATSAPP" => Some(Self::Whatsapp),
149 "CHANNEL_NAME_MICROSOFT_TEAMS" => Some(Self::MicrosoftTeams),
150 "CHANNEL_NAME_LINE" => Some(Self::Line),
151 "CHANNEL_NAME_GOOGLE_CHAT" => Some(Self::GoogleChat),
152 _ => None,
153 }
154 }
155}
156#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
160#[repr(i32)]
161pub enum ChannelStepKind {
162 Unspecified = 0,
163 Reminder = 1,
164 Escalation = 2,
165}
166impl ChannelStepKind {
167 pub fn as_str_name(&self) -> &'static str {
172 match self {
173 Self::Unspecified => "CHANNEL_STEP_KIND_UNSPECIFIED",
174 Self::Reminder => "CHANNEL_STEP_KIND_REMINDER",
175 Self::Escalation => "CHANNEL_STEP_KIND_ESCALATION",
176 }
177 }
178 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
180 match value {
181 "CHANNEL_STEP_KIND_UNSPECIFIED" => Some(Self::Unspecified),
182 "CHANNEL_STEP_KIND_REMINDER" => Some(Self::Reminder),
183 "CHANNEL_STEP_KIND_ESCALATION" => Some(Self::Escalation),
184 _ => None,
185 }
186 }
187}
188#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
192#[repr(i32)]
193pub enum ChannelEventStatus {
194 Unspecified = 0,
195 Sent = 1,
196 Delivered = 2,
197 Opened = 3,
198 Clicked = 4,
199 Bounced = 5,
200 Failed = 6,
201 Skipped = 7,
202}
203impl ChannelEventStatus {
204 pub fn as_str_name(&self) -> &'static str {
209 match self {
210 Self::Unspecified => "CHANNEL_EVENT_STATUS_UNSPECIFIED",
211 Self::Sent => "CHANNEL_EVENT_STATUS_SENT",
212 Self::Delivered => "CHANNEL_EVENT_STATUS_DELIVERED",
213 Self::Opened => "CHANNEL_EVENT_STATUS_OPENED",
214 Self::Clicked => "CHANNEL_EVENT_STATUS_CLICKED",
215 Self::Bounced => "CHANNEL_EVENT_STATUS_BOUNCED",
216 Self::Failed => "CHANNEL_EVENT_STATUS_FAILED",
217 Self::Skipped => "CHANNEL_EVENT_STATUS_SKIPPED",
218 }
219 }
220 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
222 match value {
223 "CHANNEL_EVENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
224 "CHANNEL_EVENT_STATUS_SENT" => Some(Self::Sent),
225 "CHANNEL_EVENT_STATUS_DELIVERED" => Some(Self::Delivered),
226 "CHANNEL_EVENT_STATUS_OPENED" => Some(Self::Opened),
227 "CHANNEL_EVENT_STATUS_CLICKED" => Some(Self::Clicked),
228 "CHANNEL_EVENT_STATUS_BOUNCED" => Some(Self::Bounced),
229 "CHANNEL_EVENT_STATUS_FAILED" => Some(Self::Failed),
230 "CHANNEL_EVENT_STATUS_SKIPPED" => Some(Self::Skipped),
231 _ => None,
232 }
233 }
234}
235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
238#[repr(i32)]
239pub enum ChannelSkipReason {
240 Unspecified = 0,
241 OptedOut = 1,
242 RegionBlocked = 2,
243 CostCapExceeded = 3,
244 NoIdentifier = 4,
245}
246impl ChannelSkipReason {
247 pub fn as_str_name(&self) -> &'static str {
252 match self {
253 Self::Unspecified => "CHANNEL_SKIP_REASON_UNSPECIFIED",
254 Self::OptedOut => "CHANNEL_SKIP_REASON_OPTED_OUT",
255 Self::RegionBlocked => "CHANNEL_SKIP_REASON_REGION_BLOCKED",
256 Self::CostCapExceeded => "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED",
257 Self::NoIdentifier => "CHANNEL_SKIP_REASON_NO_IDENTIFIER",
258 }
259 }
260 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
262 match value {
263 "CHANNEL_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
264 "CHANNEL_SKIP_REASON_OPTED_OUT" => Some(Self::OptedOut),
265 "CHANNEL_SKIP_REASON_REGION_BLOCKED" => Some(Self::RegionBlocked),
266 "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED" => Some(Self::CostCapExceeded),
267 "CHANNEL_SKIP_REASON_NO_IDENTIFIER" => Some(Self::NoIdentifier),
268 _ => None,
269 }
270 }
271}
272#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
274pub struct Role {
275 #[prost(string, tag="1")]
277 pub id: ::prost::alloc::string::String,
278 #[prost(string, tag="2")]
280 pub slug: ::prost::alloc::string::String,
281 #[prost(string, tag="3")]
283 pub name: ::prost::alloc::string::String,
284 #[prost(bool, tag="4")]
286 pub is_default: bool,
287 #[prost(enumeration="Permission", repeated, tag="5")]
289 pub permissions: ::prost::alloc::vec::Vec<i32>,
290 #[prost(bool, tag="6")]
292 pub is_system: bool,
293}
294#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
298pub struct Pagination {
299 #[prost(int32, tag="1")]
301 pub page_size: i32,
302 #[prost(string, tag="2")]
304 pub page_token: ::prost::alloc::string::String,
305}
306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
308pub struct PaginationMeta {
309 #[prost(string, tag="1")]
311 pub next_page_token: ::prost::alloc::string::String,
312 #[prost(int32, tag="2")]
314 pub total_count: i32,
315}
316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
320pub struct MessageAction {
321 #[prost(string, tag="1")]
323 pub id: ::prost::alloc::string::String,
324 #[prost(enumeration="ActionType", tag="2")]
326 pub r#type: i32,
327 #[prost(string, tag="3")]
330 pub label: ::prost::alloc::string::String,
331}
332#[derive(Clone, PartialEq, ::prost::Message)]
335pub struct Message {
336 #[prost(string, tag="1")]
338 pub content_id: ::prost::alloc::string::String,
339 #[prost(string, tag="2")]
341 pub campaign_id: ::prost::alloc::string::String,
342 #[prost(string, tag="3")]
345 pub sender_name: ::prost::alloc::string::String,
346 #[prost(string, tag="4")]
349 pub summary: ::prost::alloc::string::String,
350 #[prost(string, tag="5")]
353 pub preview: ::prost::alloc::string::String,
354 #[prost(string, tag="6")]
357 pub body: ::prost::alloc::string::String,
358 #[prost(bool, tag="7")]
360 pub critical: bool,
361 #[prost(message, repeated, tag="8")]
363 pub actions: ::prost::alloc::vec::Vec<MessageAction>,
364 #[prost(message, optional, tag="9")]
366 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
367 #[prost(string, tag="10")]
370 pub title: ::prost::alloc::string::String,
371}
372#[derive(Clone, PartialEq, ::prost::Message)]
378pub struct WorkflowDefinition {
379 #[prost(message, repeated, tag="1")]
382 pub steps: ::prost::alloc::vec::Vec<WorkflowStep>,
383}
384#[derive(Clone, PartialEq, ::prost::Message)]
386pub struct WorkflowStep {
387 #[prost(string, tag="1")]
389 pub id: ::prost::alloc::string::String,
390 #[prost(enumeration="StepType", tag="2")]
392 pub r#type: i32,
393 #[prost(map="string, string", tag="7")]
396 pub transitions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
397 #[prost(oneof="workflow_step::Config", tags="3, 4, 5, 6, 8")]
399 pub config: ::core::option::Option<workflow_step::Config>,
400}
401pub mod workflow_step {
403 #[derive(Clone, PartialEq, ::prost::Oneof)]
405 pub enum Config {
406 #[prost(message, tag="3")]
408 SendNotification(super::SendNotificationConfig),
409 #[prost(message, tag="4")]
411 DeadlineCheck(super::DeadlineCheckConfig),
412 #[prost(message, tag="5")]
414 SendReminder(super::SendReminderConfig),
415 #[prost(message, tag="6")]
417 CallWebhook(super::CallWebhookConfig),
418 #[prost(message, tag="8")]
420 EscalateConfig(super::EscalateConfig),
421 }
422}
423#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct SendNotificationConfig {
426 #[prost(string, tag="1")]
429 pub r#type: ::prost::alloc::string::String,
430 #[prost(string, tag="2")]
434 pub template_id: ::prost::alloc::string::String,
435 #[prost(int32, tag="3")]
438 pub template_version: i32,
439 #[prost(string, tag="4")]
442 pub action_label: ::prost::alloc::string::String,
443 #[prost(enumeration="ActionType", tag="5")]
445 pub action_type: i32,
446 #[prost(map="string, string", tag="6")]
449 pub custom_variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
450}
451#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
455pub struct DeadlineCheckConfig {
456 #[prost(string, tag="1")]
459 pub delay: ::prost::alloc::string::String,
460}
461#[derive(Clone, PartialEq, ::prost::Message)]
463pub struct SendReminderConfig {
464 #[prost(string, tag="1")]
467 pub r#type: ::prost::alloc::string::String,
468 #[prost(enumeration="ChannelName", repeated, tag="4")]
475 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
476 #[prost(message, repeated, tag="5")]
489 pub notify_targets: ::prost::alloc::vec::Vec<EscalationTarget>,
490}
491#[derive(Clone, PartialEq, ::prost::Message)]
493pub struct CallWebhookConfig {
494 #[prost(string, tag="1")]
497 pub name: ::prost::alloc::string::String,
498 #[prost(string, tag="2")]
503 pub url: ::prost::alloc::string::String,
504 #[prost(map="string, string", tag="3")]
507 pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
508}
509#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
511pub struct EscalationTarget {
512 #[prost(enumeration="EscalationTargetType", tag="1")]
514 pub r#type: i32,
515 #[prost(string, tag="2")]
518 pub target_id: ::prost::alloc::string::String,
519}
520#[derive(Clone, PartialEq, ::prost::Message)]
522pub struct EscalateConfig {
523 #[prost(enumeration="EscalationCondition", tag="1")]
525 pub condition: i32,
526 #[prost(message, repeated, tag="2")]
528 pub targets: ::prost::alloc::vec::Vec<EscalationTarget>,
529 #[prost(int32, tag="3")]
532 pub repeat_count: i32,
533 #[prost(int32, tag="4")]
535 pub repeat_interval_minutes: i32,
536 #[prost(enumeration="EscalateMode", tag="5")]
538 pub mode: i32,
539 #[prost(enumeration="ChannelName", repeated, tag="6")]
547 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
548}
549#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
553#[repr(i32)]
554pub enum CampaignStatus {
555 Unspecified = 0,
557 Created = 1,
559 Running = 2,
561 Completed = 3,
563 Failed = 4,
565 Cancelled = 5,
567}
568impl CampaignStatus {
569 pub fn as_str_name(&self) -> &'static str {
574 match self {
575 Self::Unspecified => "CAMPAIGN_STATUS_UNSPECIFIED",
576 Self::Created => "CAMPAIGN_STATUS_CREATED",
577 Self::Running => "CAMPAIGN_STATUS_RUNNING",
578 Self::Completed => "CAMPAIGN_STATUS_COMPLETED",
579 Self::Failed => "CAMPAIGN_STATUS_FAILED",
580 Self::Cancelled => "CAMPAIGN_STATUS_CANCELLED",
581 }
582 }
583 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
585 match value {
586 "CAMPAIGN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
587 "CAMPAIGN_STATUS_CREATED" => Some(Self::Created),
588 "CAMPAIGN_STATUS_RUNNING" => Some(Self::Running),
589 "CAMPAIGN_STATUS_COMPLETED" => Some(Self::Completed),
590 "CAMPAIGN_STATUS_FAILED" => Some(Self::Failed),
591 "CAMPAIGN_STATUS_CANCELLED" => Some(Self::Cancelled),
592 _ => None,
593 }
594 }
595}
596#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
598#[repr(i32)]
599pub enum DeliveryStatus {
600 Unspecified = 0,
602 Pending = 1,
604 Sent = 2,
606 Delivered = 3,
608 Acknowledged = 4,
610 Missed = 5,
612 NoDevice = 6,
614 Failed = 7,
616}
617impl DeliveryStatus {
618 pub fn as_str_name(&self) -> &'static str {
623 match self {
624 Self::Unspecified => "DELIVERY_STATUS_UNSPECIFIED",
625 Self::Pending => "DELIVERY_STATUS_PENDING",
626 Self::Sent => "DELIVERY_STATUS_SENT",
627 Self::Delivered => "DELIVERY_STATUS_DELIVERED",
628 Self::Acknowledged => "DELIVERY_STATUS_ACKNOWLEDGED",
629 Self::Missed => "DELIVERY_STATUS_MISSED",
630 Self::NoDevice => "DELIVERY_STATUS_NO_DEVICE",
631 Self::Failed => "DELIVERY_STATUS_FAILED",
632 }
633 }
634 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
636 match value {
637 "DELIVERY_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
638 "DELIVERY_STATUS_PENDING" => Some(Self::Pending),
639 "DELIVERY_STATUS_SENT" => Some(Self::Sent),
640 "DELIVERY_STATUS_DELIVERED" => Some(Self::Delivered),
641 "DELIVERY_STATUS_ACKNOWLEDGED" => Some(Self::Acknowledged),
642 "DELIVERY_STATUS_MISSED" => Some(Self::Missed),
643 "DELIVERY_STATUS_NO_DEVICE" => Some(Self::NoDevice),
644 "DELIVERY_STATUS_FAILED" => Some(Self::Failed),
645 _ => None,
646 }
647 }
648}
649#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
651#[repr(i32)]
652pub enum Platform {
653 Unspecified = 0,
655 Ios = 1,
657 Android = 2,
659}
660impl Platform {
661 pub fn as_str_name(&self) -> &'static str {
666 match self {
667 Self::Unspecified => "PLATFORM_UNSPECIFIED",
668 Self::Ios => "PLATFORM_IOS",
669 Self::Android => "PLATFORM_ANDROID",
670 }
671 }
672 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
674 match value {
675 "PLATFORM_UNSPECIFIED" => Some(Self::Unspecified),
676 "PLATFORM_IOS" => Some(Self::Ios),
677 "PLATFORM_ANDROID" => Some(Self::Android),
678 _ => None,
679 }
680 }
681}
682#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
687#[repr(i32)]
688pub enum Permission {
689 Unspecified = 0,
691 OrgRead = 1,
693 OrgWrite = 2,
695 MembersRead = 3,
697 MembersInvite = 4,
699 MembersManage = 5,
701 CampaignsRead = 6,
703 CampaignsWrite = 7,
705 CampaignsStart = 8,
707 TemplatesRead = 9,
709 TemplatesWrite = 10,
711 InboxRead = 11,
713 InboxAct = 12,
715 GroupsAllRead = 13,
717 GroupsWrite = 14,
719 GroupsAllWrite = 15,
721 TeamsAllRead = 16,
723 TeamsWrite = 17,
725 TeamsAllWrite = 18,
727 PrivacyRead = 19,
729 PrivacyWrite = 20,
731 AuditRead = 21,
733 TemplatesReview = 22,
735 PlatformSupport = 23,
738 PlatformAccessCodes = 24,
741 PlatformProvision = 25,
744 PlatformAbuseResponse = 26,
747 PlatformComplianceWrite = 27,
750 PlatformSynthetic = 28,
753 ChannelsDispatch = 29,
755 ReachabilityWrite = 30,
757 PlatformIncidents = 31,
760}
761impl Permission {
762 pub fn as_str_name(&self) -> &'static str {
767 match self {
768 Self::Unspecified => "PERMISSION_UNSPECIFIED",
769 Self::OrgRead => "PERMISSION_ORG_READ",
770 Self::OrgWrite => "PERMISSION_ORG_WRITE",
771 Self::MembersRead => "PERMISSION_MEMBERS_READ",
772 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
773 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
774 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
775 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
776 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
777 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
778 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
779 Self::InboxRead => "PERMISSION_INBOX_READ",
780 Self::InboxAct => "PERMISSION_INBOX_ACT",
781 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
782 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
783 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
784 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
785 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
786 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
787 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
788 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
789 Self::AuditRead => "PERMISSION_AUDIT_READ",
790 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
791 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
792 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
793 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
794 Self::PlatformAbuseResponse => "PERMISSION_PLATFORM_ABUSE_RESPONSE",
795 Self::PlatformComplianceWrite => "PERMISSION_PLATFORM_COMPLIANCE_WRITE",
796 Self::PlatformSynthetic => "PERMISSION_PLATFORM_SYNTHETIC",
797 Self::ChannelsDispatch => "PERMISSION_CHANNELS_DISPATCH",
798 Self::ReachabilityWrite => "PERMISSION_REACHABILITY_WRITE",
799 Self::PlatformIncidents => "PERMISSION_PLATFORM_INCIDENTS",
800 }
801 }
802 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
804 match value {
805 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
806 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
807 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
808 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
809 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
810 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
811 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
812 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
813 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
814 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
815 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
816 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
817 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
818 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
819 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
820 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
821 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
822 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
823 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
824 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
825 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
826 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
827 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
828 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
829 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
830 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
831 "PERMISSION_PLATFORM_ABUSE_RESPONSE" => Some(Self::PlatformAbuseResponse),
832 "PERMISSION_PLATFORM_COMPLIANCE_WRITE" => Some(Self::PlatformComplianceWrite),
833 "PERMISSION_PLATFORM_SYNTHETIC" => Some(Self::PlatformSynthetic),
834 "PERMISSION_CHANNELS_DISPATCH" => Some(Self::ChannelsDispatch),
835 "PERMISSION_REACHABILITY_WRITE" => Some(Self::ReachabilityWrite),
836 "PERMISSION_PLATFORM_INCIDENTS" => Some(Self::PlatformIncidents),
837 _ => None,
838 }
839 }
840}
841#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
843#[repr(i32)]
844pub enum ActionType {
845 Unspecified = 0,
847 Ack = 1,
849}
850impl ActionType {
851 pub fn as_str_name(&self) -> &'static str {
856 match self {
857 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
858 Self::Ack => "ACTION_TYPE_ACK",
859 }
860 }
861 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
863 match value {
864 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
865 "ACTION_TYPE_ACK" => Some(Self::Ack),
866 _ => None,
867 }
868 }
869}
870#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
872#[repr(i32)]
873pub enum StepType {
874 Unspecified = 0,
876 SendNotification = 1,
878 DeadlineCheck = 2,
880 SendReminder = 3,
882 CallWebhook = 4,
884 MarkMissed = 5,
886 Escalate = 6,
888}
889impl StepType {
890 pub fn as_str_name(&self) -> &'static str {
895 match self {
896 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
897 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
898 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
899 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
900 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
901 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
902 Self::Escalate => "STEP_TYPE_ESCALATE",
903 }
904 }
905 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
907 match value {
908 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
909 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
910 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
911 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
912 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
913 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
914 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
915 _ => None,
916 }
917 }
918}
919#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
921#[repr(i32)]
922pub enum EscalationCondition {
923 Unspecified = 0,
924 IfNotAcked = 1,
926 IfNotClosed = 2,
928}
929impl EscalationCondition {
930 pub fn as_str_name(&self) -> &'static str {
935 match self {
936 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
937 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
938 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
939 }
940 }
941 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
943 match value {
944 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
945 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
946 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
947 _ => None,
948 }
949 }
950}
951#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
953#[repr(i32)]
954pub enum EscalationTargetType {
955 Unspecified = 0,
956 User = 1,
958 Group = 2,
960 Manager = 3,
962 Role = 4,
964}
965impl EscalationTargetType {
966 pub fn as_str_name(&self) -> &'static str {
971 match self {
972 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
973 Self::User => "ESCALATION_TARGET_TYPE_USER",
974 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
975 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
976 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
977 }
978 }
979 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
981 match value {
982 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
983 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
984 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
985 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
986 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
987 _ => None,
988 }
989 }
990}
991#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
993#[repr(i32)]
994pub enum EscalateMode {
995 Unspecified = 0,
997 Deliver = 1,
999 AlertOnly = 2,
1001}
1002impl EscalateMode {
1003 pub fn as_str_name(&self) -> &'static str {
1008 match self {
1009 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
1010 Self::Deliver => "ESCALATE_MODE_DELIVER",
1011 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
1012 }
1013 }
1014 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1016 match value {
1017 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1018 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
1019 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
1020 _ => None,
1021 }
1022 }
1023}
1024#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1028pub struct ApiKey {
1029 #[prost(string, tag="1")]
1031 pub id: ::prost::alloc::string::String,
1032 #[prost(string, tag="2")]
1034 pub name: ::prost::alloc::string::String,
1035 #[prost(string, tag="3")]
1038 pub key_prefix: ::prost::alloc::string::String,
1039 #[prost(enumeration="Permission", repeated, tag="4")]
1041 pub permissions: ::prost::alloc::vec::Vec<i32>,
1042 #[prost(message, optional, tag="5")]
1044 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1045 #[prost(message, optional, tag="6")]
1047 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
1048 #[prost(message, optional, tag="7")]
1050 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1051 #[prost(enumeration="KeyType", tag="8")]
1054 pub key_type: i32,
1055}
1056#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1058pub struct CreateApiKeyRequest {
1059 #[prost(string, tag="1")]
1061 pub name: ::prost::alloc::string::String,
1062 #[prost(enumeration="Permission", repeated, tag="2")]
1065 pub permissions: ::prost::alloc::vec::Vec<i32>,
1066 #[prost(message, optional, tag="3")]
1068 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1069 #[prost(enumeration="KeyType", tag="4")]
1072 pub key_type: i32,
1073}
1074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1077pub struct CreateApiKeyResponse {
1078 #[prost(message, optional, tag="1")]
1080 pub api_key: ::core::option::Option<ApiKey>,
1081 #[prost(string, tag="2")]
1084 pub key: ::prost::alloc::string::String,
1085}
1086#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1088pub struct ListApiKeysRequest {
1089 #[prost(enumeration="KeyType", tag="1")]
1091 pub key_type: i32,
1092}
1093#[derive(Clone, PartialEq, ::prost::Message)]
1095pub struct ListApiKeysResponse {
1096 #[prost(message, repeated, tag="1")]
1098 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
1099}
1100#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1102pub struct RevokeApiKeyRequest {
1103 #[prost(string, tag="1")]
1105 pub api_key_id: ::prost::alloc::string::String,
1106}
1107#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1109pub struct RevokeApiKeyResponse {
1110}
1111#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1115#[repr(i32)]
1116pub enum KeyType {
1117 Unspecified = 0,
1118 ApiKey = 1,
1119 ScimToken = 2,
1120}
1121impl KeyType {
1122 pub fn as_str_name(&self) -> &'static str {
1127 match self {
1128 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
1129 Self::ApiKey => "KEY_TYPE_API_KEY",
1130 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
1131 }
1132 }
1133 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1135 match value {
1136 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1137 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
1138 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
1139 _ => None,
1140 }
1141 }
1142}
1143#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1148pub struct ExportUserDataRequest {
1149 #[prost(string, tag="1")]
1152 pub user_id: ::prost::alloc::string::String,
1153}
1154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1156pub struct ExportUserDataResponse {
1157 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1159 pub status: i32,
1160 #[prost(string, tag="2")]
1163 pub result_url: ::prost::alloc::string::String,
1164 #[prost(string, tag="3")]
1167 pub export_id: ::prost::alloc::string::String,
1168}
1169#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1174pub struct ExportOrgDataRequest {
1175}
1176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1181pub struct ExportOrgDataResponse {
1182 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1184 pub status: i32,
1185 #[prost(string, tag="2")]
1188 pub result_url: ::prost::alloc::string::String,
1189 #[prost(string, tag="3")]
1192 pub export_id: ::prost::alloc::string::String,
1193}
1194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1197pub struct DeleteUserDataRequest {
1198 #[prost(string, tag="1")]
1201 pub user_id: ::prost::alloc::string::String,
1202 #[prost(bool, tag="2")]
1205 pub anonymize: bool,
1206}
1207#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1209pub struct DeleteUserDataResponse {
1210 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1212 pub status: i32,
1213 #[prost(message, optional, tag="2")]
1216 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
1217 #[prost(string, tag="3")]
1219 pub request_id: ::prost::alloc::string::String,
1220}
1221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1224pub struct ListPrivacyRequestsRequest {
1225 #[prost(int32, tag="1")]
1228 pub page_size: i32,
1229 #[prost(string, tag="2")]
1231 pub page_token: ::prost::alloc::string::String,
1232 #[prost(string, tag="3")]
1234 pub request_type: ::prost::alloc::string::String,
1235 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1237 pub status: i32,
1238}
1239#[derive(Clone, PartialEq, ::prost::Message)]
1241pub struct ListPrivacyRequestsResponse {
1242 #[prost(message, repeated, tag="1")]
1244 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1245 #[prost(string, tag="2")]
1247 pub next_page_token: ::prost::alloc::string::String,
1248}
1249#[derive(Clone, PartialEq, ::prost::Message)]
1251pub struct PrivacyRequest {
1252 #[prost(string, tag="1")]
1254 pub id: ::prost::alloc::string::String,
1255 #[prost(string, tag="2")]
1257 pub user_id: ::prost::alloc::string::String,
1258 #[prost(string, tag="3")]
1260 pub user_email: ::prost::alloc::string::String,
1261 #[prost(string, tag="4")]
1263 pub request_type: ::prost::alloc::string::String,
1264 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1266 pub status: i32,
1267 #[prost(bool, tag="6")]
1269 pub anonymize: bool,
1270 #[prost(string, tag="7")]
1272 pub requested_by_email: ::prost::alloc::string::String,
1273 #[prost(message, optional, tag="8")]
1275 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1276 #[prost(message, optional, tag="9")]
1278 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1279 #[prost(map="string, string", tag="10")]
1281 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1282}
1283#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1286pub struct CancelDeletionRequest {
1287 #[prost(string, tag="1")]
1289 pub request_id: ::prost::alloc::string::String,
1290 #[prost(string, tag="2")]
1292 pub confirmation_email: ::prost::alloc::string::String,
1293}
1294#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1296pub struct CancelDeletionResponse {
1297 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1299 pub status: i32,
1300}
1301#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1304pub struct ImmediateDeleteRequest {
1305 #[prost(string, tag="1")]
1307 pub request_id: ::prost::alloc::string::String,
1308 #[prost(string, tag="2")]
1310 pub confirmation_email: ::prost::alloc::string::String,
1311}
1312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1314pub struct ImmediateDeleteResponse {
1315 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1317 pub status: i32,
1318}
1319#[derive(Clone, PartialEq, ::prost::Message)]
1322pub struct RectifyUserDataRequest {
1323 #[prost(string, tag="1")]
1326 pub user_id: ::prost::alloc::string::String,
1327 #[prost(map="string, string", tag="2")]
1331 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1332}
1333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1335pub struct RectifyUserDataResponse {
1336 #[prost(string, repeated, tag="1")]
1338 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1339}
1340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1343pub struct RestrictProcessingRequest {
1344 #[prost(string, tag="1")]
1347 pub user_id: ::prost::alloc::string::String,
1348 #[prost(bool, tag="2")]
1350 pub restricted: bool,
1351}
1352#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1354pub struct RestrictProcessingResponse {
1355 #[prost(bool, tag="1")]
1357 pub restricted: bool,
1358 #[prost(message, optional, tag="2")]
1360 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1361}
1362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1366pub struct GetDataExistenceConfirmationRequest {
1367 #[prost(string, tag="1")]
1370 pub user_id: ::prost::alloc::string::String,
1371}
1372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1374pub struct GetDataExistenceConfirmationResponse {
1375 #[prost(bool, tag="1")]
1377 pub exists: bool,
1378 #[prost(string, repeated, tag="2")]
1380 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1381}
1382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1385pub struct ListMyPrivacyRequestsRequest {
1386 #[prost(int32, tag="1")]
1389 pub page_size: i32,
1390 #[prost(string, tag="2")]
1392 pub page_token: ::prost::alloc::string::String,
1393 #[prost(string, tag="3")]
1395 pub request_type: ::prost::alloc::string::String,
1396 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1398 pub status: i32,
1399}
1400#[derive(Clone, PartialEq, ::prost::Message)]
1402pub struct ListMyPrivacyRequestsResponse {
1403 #[prost(message, repeated, tag="1")]
1405 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1406 #[prost(string, tag="2")]
1408 pub next_page_token: ::prost::alloc::string::String,
1409}
1410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1415pub struct OrgSecurityIncident {
1416 #[prost(string, tag="1")]
1419 pub id: ::prost::alloc::string::String,
1420 #[prost(message, optional, tag="2")]
1423 pub detected_at: ::core::option::Option<::prost_types::Timestamp>,
1424 #[prost(enumeration="SecurityIncidentSeverity", tag="3")]
1426 pub severity: i32,
1427 #[prost(enumeration="SecurityIncidentClassification", tag="4")]
1429 pub classification: i32,
1430 #[prost(message, optional, tag="5")]
1433 pub notified_at: ::core::option::Option<::prost_types::Timestamp>,
1434 #[prost(message, optional, tag="6")]
1436 pub resolved_at: ::core::option::Option<::prost_types::Timestamp>,
1437}
1438#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1442pub struct ListOrgSecurityIncidentsRequest {
1443 #[prost(int32, tag="1")]
1446 pub page_size: i32,
1447 #[prost(string, tag="2")]
1449 pub page_token: ::prost::alloc::string::String,
1450}
1451#[derive(Clone, PartialEq, ::prost::Message)]
1453pub struct ListOrgSecurityIncidentsResponse {
1454 #[prost(message, repeated, tag="1")]
1457 pub incidents: ::prost::alloc::vec::Vec<OrgSecurityIncident>,
1458 #[prost(string, tag="2")]
1460 pub next_page_token: ::prost::alloc::string::String,
1461}
1462#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1466#[repr(i32)]
1467pub enum PrivacyRequestStatus {
1468 Unspecified = 0,
1470 Pending = 1,
1472 Processing = 2,
1474 Completed = 3,
1476 Failed = 4,
1478}
1479impl PrivacyRequestStatus {
1480 pub fn as_str_name(&self) -> &'static str {
1485 match self {
1486 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1487 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1488 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1489 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1490 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1491 }
1492 }
1493 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1495 match value {
1496 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1497 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1498 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1499 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1500 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1501 _ => None,
1502 }
1503 }
1504}
1505#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1508#[repr(i32)]
1509pub enum SecurityIncidentSeverity {
1510 Unspecified = 0,
1512 Info = 1,
1514 Warn = 2,
1516 Breach = 3,
1518}
1519impl SecurityIncidentSeverity {
1520 pub fn as_str_name(&self) -> &'static str {
1525 match self {
1526 Self::Unspecified => "SECURITY_INCIDENT_SEVERITY_UNSPECIFIED",
1527 Self::Info => "SECURITY_INCIDENT_SEVERITY_INFO",
1528 Self::Warn => "SECURITY_INCIDENT_SEVERITY_WARN",
1529 Self::Breach => "SECURITY_INCIDENT_SEVERITY_BREACH",
1530 }
1531 }
1532 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1534 match value {
1535 "SECURITY_INCIDENT_SEVERITY_UNSPECIFIED" => Some(Self::Unspecified),
1536 "SECURITY_INCIDENT_SEVERITY_INFO" => Some(Self::Info),
1537 "SECURITY_INCIDENT_SEVERITY_WARN" => Some(Self::Warn),
1538 "SECURITY_INCIDENT_SEVERITY_BREACH" => Some(Self::Breach),
1539 _ => None,
1540 }
1541 }
1542}
1543#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1546#[repr(i32)]
1547pub enum SecurityIncidentClassification {
1548 Unspecified = 0,
1550 Pending = 1,
1552 NotBreach = 2,
1554 OperationalOnly = 10,
1556 PersonalDataBreach = 11,
1558 PersonalDataBreachHighRisk = 12,
1560}
1561impl SecurityIncidentClassification {
1562 pub fn as_str_name(&self) -> &'static str {
1567 match self {
1568 Self::Unspecified => "SECURITY_INCIDENT_CLASSIFICATION_UNSPECIFIED",
1569 Self::Pending => "SECURITY_INCIDENT_CLASSIFICATION_PENDING",
1570 Self::NotBreach => "SECURITY_INCIDENT_CLASSIFICATION_NOT_BREACH",
1571 Self::OperationalOnly => "SECURITY_INCIDENT_CLASSIFICATION_OPERATIONAL_ONLY",
1572 Self::PersonalDataBreach => "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH",
1573 Self::PersonalDataBreachHighRisk => "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH_HIGH_RISK",
1574 }
1575 }
1576 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1578 match value {
1579 "SECURITY_INCIDENT_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
1580 "SECURITY_INCIDENT_CLASSIFICATION_PENDING" => Some(Self::Pending),
1581 "SECURITY_INCIDENT_CLASSIFICATION_NOT_BREACH" => Some(Self::NotBreach),
1582 "SECURITY_INCIDENT_CLASSIFICATION_OPERATIONAL_ONLY" => Some(Self::OperationalOnly),
1583 "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH" => Some(Self::PersonalDataBreach),
1584 "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH_HIGH_RISK" => Some(Self::PersonalDataBreachHighRisk),
1585 _ => None,
1586 }
1587 }
1588}
1589#[derive(Clone, PartialEq, ::prost::Message)]
1594pub struct AuditEvent {
1595 #[prost(string, tag="1")]
1598 pub id: ::prost::alloc::string::String,
1599 #[prost(string, tag="2")]
1602 pub org_id: ::prost::alloc::string::String,
1603 #[prost(string, tag="3")]
1606 pub actor_id: ::prost::alloc::string::String,
1607 #[prost(enumeration="AuditEventType", tag="4")]
1609 pub event_type: i32,
1610 #[prost(string, tag="5")]
1613 pub entity_type: ::prost::alloc::string::String,
1614 #[prost(string, tag="6")]
1617 pub entity_id: ::prost::alloc::string::String,
1618 #[prost(map="string, string", tag="7")]
1621 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1622 #[prost(bool, tag="8")]
1626 pub synthetic: bool,
1627 #[prost(message, optional, tag="10")]
1629 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1630}
1631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1634pub struct ListAuditEventsRequest {
1635 #[prost(string, tag="1")]
1637 pub page_token: ::prost::alloc::string::String,
1638 #[prost(int32, tag="2")]
1641 pub page_size: i32,
1642 #[prost(enumeration="AuditEventType", tag="3")]
1644 pub event_type: i32,
1645 #[prost(string, tag="4")]
1648 pub actor_id: ::prost::alloc::string::String,
1649 #[prost(message, optional, tag="5")]
1651 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1652 #[prost(message, optional, tag="6")]
1654 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1655}
1656#[derive(Clone, PartialEq, ::prost::Message)]
1658pub struct ListAuditEventsResponse {
1659 #[prost(message, repeated, tag="1")]
1661 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1662 #[prost(string, tag="2")]
1664 pub next_page_token: ::prost::alloc::string::String,
1665}
1666#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1669pub struct ExportAuditTrailRequest {
1670 #[prost(enumeration="AuditExportFormat", tag="1")]
1672 pub format: i32,
1673 #[prost(message, optional, tag="2")]
1675 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1676 #[prost(message, optional, tag="3")]
1678 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1679}
1680#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1682pub struct ExportAuditTrailResponse {
1683 #[prost(string, tag="1")]
1686 pub export_url: ::prost::alloc::string::String,
1687 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1689 pub status: i32,
1690}
1691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1693pub struct AuditExport {
1694 #[prost(string, tag="1")]
1696 pub id: ::prost::alloc::string::String,
1697 #[prost(string, tag="2")]
1699 pub format: ::prost::alloc::string::String,
1700 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1702 pub status: i32,
1703 #[prost(string, tag="4")]
1705 pub result_url: ::prost::alloc::string::String,
1706 #[prost(string, tag="5")]
1708 pub error_message: ::prost::alloc::string::String,
1709 #[prost(string, tag="6")]
1711 pub requested_by_email: ::prost::alloc::string::String,
1712 #[prost(message, optional, tag="7")]
1714 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1715 #[prost(message, optional, tag="8")]
1717 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1718}
1719#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1722pub struct ListAuditExportsRequest {
1723}
1724#[derive(Clone, PartialEq, ::prost::Message)]
1726pub struct ListAuditExportsResponse {
1727 #[prost(message, repeated, tag="1")]
1729 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1730}
1731#[derive(Clone, PartialEq, ::prost::Message)]
1739pub struct AppendRequest {
1740 #[prost(string, tag="1")]
1746 pub event_type: ::prost::alloc::string::String,
1747 #[prost(string, tag="2")]
1749 pub org_id: ::prost::alloc::string::String,
1750 #[prost(string, optional, tag="3")]
1753 pub subject_user_id: ::core::option::Option<::prost::alloc::string::String>,
1754 #[prost(string, optional, tag="4")]
1757 pub actor_id: ::core::option::Option<::prost::alloc::string::String>,
1758 #[prost(message, optional, tag="5")]
1766 pub details: ::core::option::Option<::prost_types::Struct>,
1767}
1768#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1769pub struct AppendResponse {
1770 #[prost(string, tag="1")]
1772 pub event_id: ::prost::alloc::string::String,
1773}
1774#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1778#[repr(i32)]
1779pub enum AuditEventType {
1780 Unspecified = 0,
1782 CampaignCreated = 1,
1785 MessageSent = 2,
1787 MessageOpened = 3,
1789 AckRegistered = 4,
1791 EscalationExecuted = 5,
1793 CampaignStarted = 12,
1795 CampaignCancelled = 13,
1797 CampaignUpdated = 14,
1799 UserInvited = 6,
1802 UserDeactivated = 7,
1804 UserReactivated = 15,
1806 RoleChanged = 10,
1808 InviteRevoked = 16,
1810 ProfileUpdated = 17,
1812 SettingsUpdated = 18,
1814 PasskeyEnrolled = 19,
1816 DataExportRequested = 8,
1819 DataDeletionRequested = 9,
1821 DataRectified = 20,
1823 ProcessingRestricted = 21,
1825 DeletionCancelled = 22,
1827 DeletionImmediate = 23,
1829 SsoConfigured = 11,
1832 SsoProviderCreated = 24,
1834 SsoProviderDeleted = 25,
1836 OrgUpdated = 26,
1838 RoleCreated = 27,
1841 RoleUpdated = 28,
1843 RoleDeleted = 29,
1845 TemplateCreated = 30,
1848 TemplateUpdated = 31,
1850 ApiKeyCreated = 32,
1853 ApiKeyRevoked = 33,
1855 InviteLinkCreated = 34,
1858 InviteLinkRevoked = 35,
1860 GroupCreated = 36,
1863 GroupUpdated = 37,
1865 GroupDeleted = 38,
1867 GroupMembersAdded = 39,
1869 GroupMembersRemoved = 40,
1871 TeamCreated = 41,
1874 TeamUpdated = 42,
1876 TeamDeleted = 43,
1878 TeamMembersAdded = 44,
1880 TeamMembersRemoved = 45,
1882 ScimUserProvisioned = 46,
1885 ScimUserDeprovisioned = 47,
1887 ScimUserUpdated = 48,
1889 TranslationCreated = 49,
1892 TranslationApproved = 50,
1894 SandboxCreated = 51,
1897 SandboxExpired = 52,
1899 AiPredictionLogged = 53,
1902 MlPipelineTriggered = 54,
1904 ArchetypeClusteringTriggered = 55,
1906 OrgCreated = 56,
1909 OrgDeleted = 57,
1911 ReachabilityUpsert = 58,
1915 ReachabilityRemove = 59,
1918}
1919impl AuditEventType {
1920 pub fn as_str_name(&self) -> &'static str {
1925 match self {
1926 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1927 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1928 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1929 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1930 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1931 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1932 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1933 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1934 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1935 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1936 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1937 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1938 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1939 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1940 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1941 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1942 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1943 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1944 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1945 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1946 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1947 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1948 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1949 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1950 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1951 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1952 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1953 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1954 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1955 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1956 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1957 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1958 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1959 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1960 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1961 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1962 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1963 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1964 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1965 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1966 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1967 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1968 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1969 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1970 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1971 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1972 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1973 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1974 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1975 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1976 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1977 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1978 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1979 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1980 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1981 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1982 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1983 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1984 Self::ReachabilityUpsert => "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT",
1985 Self::ReachabilityRemove => "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE",
1986 }
1987 }
1988 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1990 match value {
1991 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1992 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1993 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1994 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1995 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1996 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1997 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1998 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1999 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
2000 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
2001 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
2002 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
2003 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
2004 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
2005 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
2006 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
2007 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
2008 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
2009 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
2010 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
2011 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
2012 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
2013 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
2014 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
2015 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
2016 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
2017 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
2018 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
2019 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
2020 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
2021 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
2022 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
2023 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
2024 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
2025 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
2026 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
2027 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
2028 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
2029 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
2030 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
2031 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
2032 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
2033 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
2034 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
2035 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
2036 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
2037 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
2038 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
2039 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
2040 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
2041 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
2042 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
2043 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
2044 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
2045 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
2046 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
2047 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
2048 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
2049 "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT" => Some(Self::ReachabilityUpsert),
2050 "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE" => Some(Self::ReachabilityRemove),
2051 _ => None,
2052 }
2053 }
2054}
2055#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2057#[repr(i32)]
2058pub enum AuditExportFormat {
2059 Unspecified = 0,
2061 Csv = 1,
2063 Json = 2,
2065 Parquet = 3,
2067}
2068impl AuditExportFormat {
2069 pub fn as_str_name(&self) -> &'static str {
2074 match self {
2075 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
2076 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
2077 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
2078 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
2079 }
2080 }
2081 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2083 match value {
2084 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2085 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
2086 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
2087 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
2088 _ => None,
2089 }
2090 }
2091}
2092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2096pub struct ResolvePrincipalPermissionsRequest {
2097 #[prost(string, tag="1")]
2100 pub subject: ::prost::alloc::string::String,
2101 #[prost(string, tag="2")]
2103 pub org_id: ::prost::alloc::string::String,
2104 #[prost(enumeration="PrincipalType", tag="3")]
2106 pub principal_type: i32,
2107}
2108#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2110pub struct ResolvePrincipalPermissionsResponse {
2111 #[prost(enumeration="Permission", repeated, tag="1")]
2114 pub permissions: ::prost::alloc::vec::Vec<i32>,
2115}
2116#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2120#[repr(i32)]
2121pub enum PrincipalType {
2122 Unspecified = 0,
2123 User = 1,
2125 Org = 2,
2128 Staff = 3,
2131}
2132impl PrincipalType {
2133 pub fn as_str_name(&self) -> &'static str {
2138 match self {
2139 Self::Unspecified => "PRINCIPAL_TYPE_UNSPECIFIED",
2140 Self::User => "PRINCIPAL_TYPE_USER",
2141 Self::Org => "PRINCIPAL_TYPE_ORG",
2142 Self::Staff => "PRINCIPAL_TYPE_STAFF",
2143 }
2144 }
2145 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2147 match value {
2148 "PRINCIPAL_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2149 "PRINCIPAL_TYPE_USER" => Some(Self::User),
2150 "PRINCIPAL_TYPE_ORG" => Some(Self::Org),
2151 "PRINCIPAL_TYPE_STAFF" => Some(Self::Staff),
2152 _ => None,
2153 }
2154 }
2155}
2156#[derive(Clone, PartialEq, ::prost::Message)]
2161pub struct Campaign {
2162 #[prost(string, tag="1")]
2165 pub id: ::prost::alloc::string::String,
2166 #[prost(string, tag="2")]
2169 pub name: ::prost::alloc::string::String,
2170 #[prost(string, tag="3")]
2173 pub template_id: ::prost::alloc::string::String,
2174 #[prost(int32, tag="4")]
2176 pub template_version: i32,
2177 #[prost(string, tag="5")]
2179 pub audience_snapshot_ref: ::prost::alloc::string::String,
2180 #[prost(enumeration="CampaignStatus", tag="6")]
2182 pub status: i32,
2183 #[prost(message, optional, tag="7")]
2185 pub workflow: ::core::option::Option<WorkflowDefinition>,
2186 #[prost(int32, tag="8")]
2188 pub total_recipients: i32,
2189 #[prost(int32, tag="9")]
2191 pub action_completed_count: i32,
2192 #[prost(int32, tag="10")]
2194 pub missed_count: i32,
2195 #[prost(message, optional, tag="11")]
2197 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2198 #[prost(message, optional, tag="12")]
2200 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
2201 #[prost(message, optional, tag="13")]
2203 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
2204 #[prost(string, tag="14")]
2207 pub sender_name: ::prost::alloc::string::String,
2208 #[prost(string, tag="15")]
2211 pub title: ::prost::alloc::string::String,
2212 #[prost(bool, tag="16")]
2214 pub critical: bool,
2215 #[prost(string, tag="17")]
2220 pub default_locale: ::prost::alloc::string::String,
2221 #[prost(bool, tag="18")]
2225 pub wait_for_enrollment: bool,
2226 #[prost(message, optional, tag="19")]
2229 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2230 #[prost(bool, tag="20")]
2233 pub synthetic: bool,
2234}
2235#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2240pub struct CampaignOriginatingArchetype {
2241 #[prost(string, tag="1")]
2243 pub group_id: ::prost::alloc::string::String,
2244 #[prost(string, tag="2")]
2247 pub archetype_label: ::prost::alloc::string::String,
2248}
2249#[derive(Clone, PartialEq, ::prost::Message)]
2251pub struct AudienceMember {
2252 #[prost(string, tag="1")]
2254 pub user_id: ::prost::alloc::string::String,
2255 #[prost(map="string, string", tag="2")]
2257 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2258}
2259#[derive(Clone, PartialEq, ::prost::Message)]
2261pub struct CreateCampaignRequest {
2262 #[prost(string, tag="1")]
2265 pub name: ::prost::alloc::string::String,
2266 #[prost(string, tag="2")]
2269 pub template_id: ::prost::alloc::string::String,
2270 #[prost(int32, tag="3")]
2272 pub template_version: i32,
2273 #[prost(string, repeated, tag="4")]
2276 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2277 #[prost(message, optional, tag="5")]
2282 pub workflow: ::core::option::Option<WorkflowDefinition>,
2283 #[prost(string, tag="6")]
2286 pub sender_name: ::prost::alloc::string::String,
2287 #[prost(string, tag="7")]
2290 pub title: ::prost::alloc::string::String,
2291 #[prost(message, repeated, tag="8")]
2295 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
2296 #[prost(bool, tag="9")]
2299 pub include_restricted: bool,
2300 #[prost(bool, tag="10")]
2302 pub critical: bool,
2303 #[prost(string, tag="11")]
2305 pub default_locale: ::prost::alloc::string::String,
2306 #[prost(bool, tag="12")]
2310 pub wait_for_enrollment: bool,
2311 #[prost(message, optional, tag="13")]
2316 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2317}
2318#[derive(Clone, PartialEq, ::prost::Message)]
2320pub struct CreateCampaignResponse {
2321 #[prost(message, optional, tag="1")]
2323 pub campaign: ::core::option::Option<Campaign>,
2324}
2325#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2327pub struct StartCampaignRequest {
2328 #[prost(string, tag="1")]
2331 pub campaign_id: ::prost::alloc::string::String,
2332}
2333#[derive(Clone, PartialEq, ::prost::Message)]
2335pub struct StartCampaignResponse {
2336 #[prost(message, optional, tag="1")]
2338 pub campaign: ::core::option::Option<Campaign>,
2339}
2340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2342pub struct GetCampaignRequest {
2343 #[prost(string, tag="1")]
2346 pub campaign_id: ::prost::alloc::string::String,
2347}
2348#[derive(Clone, PartialEq, ::prost::Message)]
2350pub struct GetCampaignResponse {
2351 #[prost(message, optional, tag="1")]
2353 pub campaign: ::core::option::Option<Campaign>,
2354}
2355#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2357pub struct ListCampaignsRequest {
2358 #[prost(message, optional, tag="1")]
2360 pub pagination: ::core::option::Option<Pagination>,
2361}
2362#[derive(Clone, PartialEq, ::prost::Message)]
2364pub struct ListCampaignsResponse {
2365 #[prost(message, repeated, tag="1")]
2367 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
2368 #[prost(message, optional, tag="2")]
2370 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2371}
2372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2374pub struct CancelCampaignRequest {
2375 #[prost(string, tag="1")]
2378 pub campaign_id: ::prost::alloc::string::String,
2379}
2380#[derive(Clone, PartialEq, ::prost::Message)]
2382pub struct CancelCampaignResponse {
2383 #[prost(message, optional, tag="1")]
2385 pub campaign: ::core::option::Option<Campaign>,
2386}
2387#[derive(Clone, PartialEq, ::prost::Message)]
2390pub struct UpdateCampaignRequest {
2391 #[prost(string, tag="1")]
2394 pub campaign_id: ::prost::alloc::string::String,
2395 #[prost(string, tag="2")]
2398 pub name: ::prost::alloc::string::String,
2399 #[prost(string, tag="3")]
2402 pub sender_name: ::prost::alloc::string::String,
2403 #[prost(string, tag="4")]
2406 pub title: ::prost::alloc::string::String,
2407 #[prost(string, tag="5")]
2410 pub template_id: ::prost::alloc::string::String,
2411 #[prost(int32, tag="6")]
2413 pub template_version: i32,
2414 #[prost(message, optional, tag="7")]
2416 pub workflow: ::core::option::Option<WorkflowDefinition>,
2417}
2418#[derive(Clone, PartialEq, ::prost::Message)]
2420pub struct UpdateCampaignResponse {
2421 #[prost(message, optional, tag="1")]
2423 pub campaign: ::core::option::Option<Campaign>,
2424}
2425#[derive(Clone, PartialEq, ::prost::Message)]
2432pub struct DeliveryMetadata {
2433 #[prost(message, optional, tag="1")]
2437 pub original_message: ::core::option::Option<Message>,
2438 #[prost(string, tag="2")]
2441 pub original_recipient_name: ::prost::alloc::string::String,
2442 #[prost(string, tag="3")]
2445 pub campaign_title: ::prost::alloc::string::String,
2446 #[prost(message, optional, tag="4")]
2449 pub reminder_fired_at: ::core::option::Option<::prost_types::Timestamp>,
2450}
2451#[derive(Clone, PartialEq, ::prost::Message)]
2452pub struct Delivery {
2453 #[prost(string, tag="1")]
2456 pub id: ::prost::alloc::string::String,
2457 #[prost(string, tag="2")]
2460 pub user_id: ::prost::alloc::string::String,
2461 #[prost(string, tag="3")]
2464 pub campaign_id: ::prost::alloc::string::String,
2465 #[prost(enumeration="DeliveryStatus", tag="4")]
2467 pub status: i32,
2468 #[prost(message, optional, tag="5")]
2470 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
2471 #[prost(message, optional, tag="6")]
2473 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
2474 #[prost(message, optional, tag="7")]
2476 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
2477 #[prost(string, tag="8")]
2479 pub recipient_email: ::prost::alloc::string::String,
2480 #[prost(enumeration="delivery::Kind", tag="12")]
2483 pub kind: i32,
2484 #[prost(string, tag="13")]
2488 pub parent_delivery_id: ::prost::alloc::string::String,
2489 #[prost(string, tag="14")]
2493 pub rendered_locale: ::prost::alloc::string::String,
2494 #[prost(message, optional, tag="15")]
2498 pub metadata: ::core::option::Option<DeliveryMetadata>,
2499 #[prost(bool, tag="9")]
2502 pub synthetic: bool,
2503}
2504pub mod delivery {
2506 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2508 #[repr(i32)]
2509 pub enum Kind {
2510 Unspecified = 0,
2512 Primary = 1,
2514 Escalation = 2,
2516 ReminderFyi = 3,
2521 }
2522 impl Kind {
2523 pub fn as_str_name(&self) -> &'static str {
2528 match self {
2529 Self::Unspecified => "KIND_UNSPECIFIED",
2530 Self::Primary => "KIND_PRIMARY",
2531 Self::Escalation => "KIND_ESCALATION",
2532 Self::ReminderFyi => "KIND_REMINDER_FYI",
2533 }
2534 }
2535 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2537 match value {
2538 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
2539 "KIND_PRIMARY" => Some(Self::Primary),
2540 "KIND_ESCALATION" => Some(Self::Escalation),
2541 "KIND_REMINDER_FYI" => Some(Self::ReminderFyi),
2542 _ => None,
2543 }
2544 }
2545 }
2546}
2547#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2549pub struct ListDeliveriesRequest {
2550 #[prost(string, tag="1")]
2553 pub campaign_id: ::prost::alloc::string::String,
2554 #[prost(enumeration="DeliveryStatus", tag="2")]
2556 pub status_filter: i32,
2557 #[prost(message, optional, tag="3")]
2559 pub pagination: ::core::option::Option<Pagination>,
2560}
2561#[derive(Clone, PartialEq, ::prost::Message)]
2563pub struct ListDeliveriesResponse {
2564 #[prost(message, repeated, tag="1")]
2566 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2567 #[prost(message, optional, tag="2")]
2569 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2570}
2571#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2576pub struct GetCampaignArchetypeBreakdownRequest {
2577 #[prost(string, tag="1")]
2580 pub campaign_id: ::prost::alloc::string::String,
2581}
2582#[derive(Clone, PartialEq, ::prost::Message)]
2587pub struct ArchetypeShareShift {
2588 #[prost(string, tag="1")]
2590 pub label: ::prost::alloc::string::String,
2591 #[prost(double, tag="2")]
2594 pub share_before: f64,
2595 #[prost(double, tag="3")]
2598 pub share_after: f64,
2599 #[prost(bool, tag="4")]
2602 pub is_origin: bool,
2603 #[prost(uint64, tag="5")]
2606 pub email_delivered_count: u64,
2607 #[prost(double, tag="6")]
2610 pub email_open_rate_real: f64,
2611 #[prost(double, tag="7")]
2614 pub email_open_rate_raw: f64,
2615}
2616#[derive(Clone, PartialEq, ::prost::Message)]
2621pub struct GetCampaignArchetypeBreakdownResponse {
2622 #[prost(message, repeated, tag="1")]
2625 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2626 #[prost(message, optional, tag="2")]
2629 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2630 #[prost(message, optional, tag="3")]
2632 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2633 #[prost(bool, tag="4")]
2637 pub insufficient_history: bool,
2638}
2639#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2646pub struct ResolveOrCreateShortCodeRequest {
2647 #[prost(string, tag="1")]
2650 pub campaign_id: ::prost::alloc::string::String,
2651}
2652#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2656pub struct ResolveOrCreateShortCodeResponse {
2657 #[prost(string, tag="1")]
2659 pub short_code: ::prost::alloc::string::String,
2660}
2661#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2668pub struct GetCampaignByShortCodeRequest {
2669 #[prost(string, tag="1")]
2672 pub short_code: ::prost::alloc::string::String,
2673}
2674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2681pub struct GetCampaignByShortCodeResponse {
2682 #[prost(string, tag="1")]
2685 pub campaign_id: ::prost::alloc::string::String,
2686 #[prost(string, tag="2")]
2689 pub org_id: ::prost::alloc::string::String,
2690 #[prost(string, tag="3")]
2694 pub organization_name: ::prost::alloc::string::String,
2695 #[prost(string, tag="4")]
2699 pub subject: ::prost::alloc::string::String,
2700}
2701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2706pub struct Device {
2707 #[prost(string, tag="1")]
2710 pub device_id: ::prost::alloc::string::String,
2711 #[prost(string, tag="2")]
2714 pub user_id: ::prost::alloc::string::String,
2715 #[prost(enumeration="Platform", tag="3")]
2717 pub platform: i32,
2718 #[prost(string, tag="4")]
2720 pub push_token: ::prost::alloc::string::String,
2721 #[prost(bool, tag="5")]
2723 pub active: bool,
2724 #[prost(message, optional, tag="6")]
2726 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2727 #[prost(message, optional, tag="7")]
2729 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2730}
2731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2733pub struct DeviceSummary {
2734 #[prost(string, tag="1")]
2736 pub device_id: ::prost::alloc::string::String,
2737 #[prost(string, tag="2")]
2739 pub user_id: ::prost::alloc::string::String,
2740 #[prost(enumeration="Platform", tag="3")]
2742 pub platform: i32,
2743 #[prost(bool, tag="4")]
2745 pub active: bool,
2746 #[prost(message, optional, tag="5")]
2748 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2749 #[prost(message, optional, tag="6")]
2751 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2752}
2753#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2755pub struct RegisterRequest {
2756 #[prost(string, tag="1")]
2759 pub device_id: ::prost::alloc::string::String,
2760 #[prost(enumeration="Platform", tag="2")]
2762 pub platform: i32,
2763 #[prost(string, tag="3")]
2766 pub push_token: ::prost::alloc::string::String,
2767}
2768#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2770pub struct RegisterResponse {
2771 #[prost(message, optional, tag="1")]
2773 pub device: ::core::option::Option<DeviceSummary>,
2774}
2775#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2777pub struct DeactivateRequest {
2778 #[prost(string, tag="1")]
2781 pub device_id: ::prost::alloc::string::String,
2782}
2783#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2785pub struct DeactivateResponse {
2786 #[prost(bool, tag="1")]
2788 pub success: bool,
2789}
2790#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2792pub struct ListDevicesRequest {
2793}
2794#[derive(Clone, PartialEq, ::prost::Message)]
2796pub struct ListDevicesResponse {
2797 #[prost(message, repeated, tag="1")]
2799 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2800}
2801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2803pub struct ListMemberDevicesRequest {
2804 #[prost(string, tag="1")]
2807 pub user_id: ::prost::alloc::string::String,
2808}
2809#[derive(Clone, PartialEq, ::prost::Message)]
2811pub struct ListMemberDevicesResponse {
2812 #[prost(message, repeated, tag="1")]
2814 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2815}
2816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2821pub struct UserSettings {
2822 #[prost(enumeration="ThemePreference", tag="1")]
2824 pub theme_preference: i32,
2825 #[prost(string, tag="2")]
2829 pub preferred_locale: ::prost::alloc::string::String,
2830}
2831#[derive(Clone, PartialEq, ::prost::Message)]
2834pub struct UserProfile {
2835 #[prost(string, tag="1")]
2838 pub first_name: ::prost::alloc::string::String,
2839 #[prost(string, tag="2")]
2842 pub last_name: ::prost::alloc::string::String,
2843 #[prost(string, tag="3")]
2846 pub department: ::prost::alloc::string::String,
2847 #[prost(string, tag="4")]
2850 pub title: ::prost::alloc::string::String,
2851 #[prost(string, tag="5")]
2854 pub phone: ::prost::alloc::string::String,
2855 #[prost(string, tag="6")]
2858 pub location: ::prost::alloc::string::String,
2859 #[prost(string, tag="7")]
2862 pub employee_id: ::prost::alloc::string::String,
2863 #[prost(string, tag="8")]
2866 pub manager_name: ::prost::alloc::string::String,
2867 #[prost(string, tag="9")]
2870 pub start_date: ::prost::alloc::string::String,
2871 #[prost(map="string, string", tag="10")]
2874 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2875 #[prost(string, tag="11")]
2879 pub manager_id: ::prost::alloc::string::String,
2880}
2881#[derive(Clone, PartialEq, ::prost::Message)]
2883pub struct User {
2884 #[prost(string, tag="1")]
2886 pub id: ::prost::alloc::string::String,
2887 #[prost(string, tag="2")]
2890 pub email: ::prost::alloc::string::String,
2891 #[prost(string, tag="3")]
2894 pub name: ::prost::alloc::string::String,
2895 #[prost(enumeration="UserStatus", tag="5")]
2897 pub status: i32,
2898 #[prost(message, optional, tag="6")]
2900 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2901 #[prost(message, optional, tag="7")]
2903 pub role: ::core::option::Option<Role>,
2904 #[prost(string, tag="8")]
2906 pub role_id: ::prost::alloc::string::String,
2907 #[prost(message, optional, tag="9")]
2910 pub profile: ::core::option::Option<UserProfile>,
2911 #[prost(bool, tag="10")]
2914 pub processing_restricted: bool,
2915 #[prost(string, tag="11")]
2918 pub data_governance_region: ::prost::alloc::string::String,
2919}
2920#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2924#[repr(i32)]
2925pub enum UserStatus {
2926 Unspecified = 0,
2928 Invited = 1,
2930 Active = 2,
2932 Deactivated = 3,
2934}
2935impl UserStatus {
2936 pub fn as_str_name(&self) -> &'static str {
2941 match self {
2942 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2943 Self::Invited => "USER_STATUS_INVITED",
2944 Self::Active => "USER_STATUS_ACTIVE",
2945 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2946 }
2947 }
2948 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2950 match value {
2951 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2952 "USER_STATUS_INVITED" => Some(Self::Invited),
2953 "USER_STATUS_ACTIVE" => Some(Self::Active),
2954 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2955 _ => None,
2956 }
2957 }
2958}
2959#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2961#[repr(i32)]
2962pub enum ThemePreference {
2963 Unspecified = 0,
2965 Light = 1,
2967 Dark = 2,
2969 System = 3,
2971}
2972impl ThemePreference {
2973 pub fn as_str_name(&self) -> &'static str {
2978 match self {
2979 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2980 Self::Light => "THEME_PREFERENCE_LIGHT",
2981 Self::Dark => "THEME_PREFERENCE_DARK",
2982 Self::System => "THEME_PREFERENCE_SYSTEM",
2983 }
2984 }
2985 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2987 match value {
2988 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2989 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2990 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2991 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2992 _ => None,
2993 }
2994 }
2995}
2996#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3001pub struct Group {
3002 #[prost(string, tag="1")]
3004 pub id: ::prost::alloc::string::String,
3005 #[prost(string, tag="2")]
3008 pub name: ::prost::alloc::string::String,
3009 #[prost(string, tag="3")]
3012 pub description: ::prost::alloc::string::String,
3013 #[prost(int32, tag="4")]
3015 pub member_count: i32,
3016 #[prost(message, optional, tag="5")]
3018 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3019 #[prost(message, optional, tag="6")]
3021 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
3022 #[prost(bool, tag="7")]
3024 pub is_default: bool,
3025 #[prost(string, tag="8")]
3027 pub created_by: ::prost::alloc::string::String,
3028}
3029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3031pub struct CreateGroupRequest {
3032 #[prost(string, tag="1")]
3035 pub name: ::prost::alloc::string::String,
3036 #[prost(string, tag="2")]
3039 pub description: ::prost::alloc::string::String,
3040}
3041#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3043pub struct CreateGroupResponse {
3044 #[prost(message, optional, tag="1")]
3046 pub group: ::core::option::Option<Group>,
3047}
3048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3050pub struct GetGroupRequest {
3051 #[prost(string, tag="1")]
3053 pub group_id: ::prost::alloc::string::String,
3054}
3055#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3057pub struct GetGroupResponse {
3058 #[prost(message, optional, tag="1")]
3060 pub group: ::core::option::Option<Group>,
3061}
3062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3064pub struct ListGroupsRequest {
3065 #[prost(message, optional, tag="1")]
3067 pub pagination: ::core::option::Option<Pagination>,
3068}
3069#[derive(Clone, PartialEq, ::prost::Message)]
3071pub struct ListGroupsResponse {
3072 #[prost(message, repeated, tag="1")]
3074 pub groups: ::prost::alloc::vec::Vec<Group>,
3075 #[prost(message, optional, tag="2")]
3077 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3078}
3079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3081pub struct UpdateGroupRequest {
3082 #[prost(string, tag="1")]
3084 pub group_id: ::prost::alloc::string::String,
3085 #[prost(string, tag="2")]
3089 pub name: ::prost::alloc::string::String,
3090 #[prost(string, tag="3")]
3093 pub description: ::prost::alloc::string::String,
3094}
3095#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3097pub struct UpdateGroupResponse {
3098 #[prost(message, optional, tag="1")]
3100 pub group: ::core::option::Option<Group>,
3101}
3102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3104pub struct DeleteGroupRequest {
3105 #[prost(string, tag="1")]
3108 pub group_id: ::prost::alloc::string::String,
3109}
3110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3112pub struct DeleteGroupResponse {
3113}
3114#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3116pub struct AddGroupMembersRequest {
3117 #[prost(string, tag="1")]
3119 pub group_id: ::prost::alloc::string::String,
3120 #[prost(string, repeated, tag="2")]
3124 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3125}
3126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3128pub struct AddGroupMembersResponse {
3129 #[prost(message, optional, tag="1")]
3131 pub group: ::core::option::Option<Group>,
3132}
3133#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3135pub struct RemoveGroupMembersRequest {
3136 #[prost(string, tag="1")]
3138 pub group_id: ::prost::alloc::string::String,
3139 #[prost(string, repeated, tag="2")]
3142 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3143}
3144#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3146pub struct RemoveGroupMembersResponse {
3147 #[prost(message, optional, tag="1")]
3149 pub group: ::core::option::Option<Group>,
3150}
3151#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3153pub struct ListGroupMembersRequest {
3154 #[prost(string, tag="1")]
3156 pub group_id: ::prost::alloc::string::String,
3157 #[prost(message, optional, tag="2")]
3159 pub pagination: ::core::option::Option<Pagination>,
3160}
3161#[derive(Clone, PartialEq, ::prost::Message)]
3163pub struct ListGroupMembersResponse {
3164 #[prost(message, repeated, tag="1")]
3166 pub users: ::prost::alloc::vec::Vec<User>,
3167 #[prost(message, optional, tag="2")]
3169 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3170}
3171#[derive(Clone, PartialEq, ::prost::Message)]
3173pub struct UserGroupMembership {
3174 #[prost(string, tag="1")]
3176 pub user_id: ::prost::alloc::string::String,
3177 #[prost(message, repeated, tag="2")]
3179 pub groups: ::prost::alloc::vec::Vec<Group>,
3180}
3181#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3183pub struct GetUserGroupMembershipsRequest {
3184 #[prost(string, repeated, tag="1")]
3187 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3188}
3189#[derive(Clone, PartialEq, ::prost::Message)]
3191pub struct GetUserGroupMembershipsResponse {
3192 #[prost(message, repeated, tag="1")]
3194 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
3195}
3196#[derive(Clone, PartialEq, ::prost::Message)]
3200pub struct TouchEvent {
3201 #[prost(string, tag="1")]
3204 pub screen_name: ::prost::alloc::string::String,
3205 #[prost(float, tag="2")]
3208 pub x_pct: f32,
3209 #[prost(float, tag="3")]
3212 pub y_pct: f32,
3213 #[prost(enumeration="TouchEventType", tag="4")]
3215 pub event_type: i32,
3216 #[prost(int32, tag="5")]
3218 pub screen_width: i32,
3219 #[prost(int32, tag="6")]
3221 pub screen_height: i32,
3222 #[prost(message, optional, tag="7")]
3224 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
3225 #[prost(string, tag="8")]
3228 pub campaign_id: ::prost::alloc::string::String,
3229}
3230#[derive(Clone, PartialEq, ::prost::Message)]
3232pub struct IngestTouchEventsRequest {
3233 #[prost(message, repeated, tag="1")]
3236 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
3237}
3238#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3240pub struct IngestTouchEventsResponse {
3241 #[prost(int32, tag="1")]
3243 pub ingested_count: i32,
3244}
3245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3247pub struct HeatmapDataPoint {
3248 #[prost(float, tag="1")]
3250 pub x_pct: f32,
3251 #[prost(float, tag="2")]
3253 pub y_pct: f32,
3254 #[prost(float, tag="3")]
3256 pub value: f32,
3257}
3258#[derive(Clone, PartialEq, ::prost::Message)]
3260pub struct QueryHeatmapDataRequest {
3261 #[prost(string, tag="1")]
3264 pub screen_name: ::prost::alloc::string::String,
3265 #[prost(message, optional, tag="2")]
3267 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
3268 #[prost(message, optional, tag="3")]
3270 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
3271 #[prost(string, tag="4")]
3274 pub campaign_id: ::prost::alloc::string::String,
3275 #[prost(float, tag="6")]
3278 pub grid_resolution: f32,
3279 #[prost(enumeration="HeatmapMode", tag="7")]
3281 pub mode: i32,
3282 #[prost(enumeration="TouchEventType", repeated, tag="8")]
3284 pub event_types: ::prost::alloc::vec::Vec<i32>,
3285}
3286#[derive(Clone, PartialEq, ::prost::Message)]
3288pub struct QueryHeatmapDataResponse {
3289 #[prost(message, repeated, tag="1")]
3291 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
3292 #[prost(string, tag="3")]
3295 pub screenshot_url: ::prost::alloc::string::String,
3296 #[prost(bool, tag="4")]
3298 pub cohort_enabled: bool,
3299}
3300#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3302pub struct UploadScreenshotRequest {
3303 #[prost(string, tag="1")]
3306 pub screen_name: ::prost::alloc::string::String,
3307 #[prost(string, tag="2")]
3309 pub app_version: ::prost::alloc::string::String,
3310 #[prost(bytes="vec", tag="3")]
3313 pub image_data: ::prost::alloc::vec::Vec<u8>,
3314}
3315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3317pub struct UploadScreenshotResponse {
3318 #[prost(string, tag="1")]
3320 pub url: ::prost::alloc::string::String,
3321}
3322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3324pub struct ScreenScreenshot {
3325 #[prost(string, tag="1")]
3327 pub screen_name: ::prost::alloc::string::String,
3328 #[prost(string, tag="2")]
3330 pub url: ::prost::alloc::string::String,
3331 #[prost(string, tag="3")]
3333 pub app_version: ::prost::alloc::string::String,
3334}
3335#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3337pub struct ListScreenshotsRequest {
3338}
3339#[derive(Clone, PartialEq, ::prost::Message)]
3341pub struct ListScreenshotsResponse {
3342 #[prost(message, repeated, tag="1")]
3344 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3345}
3346#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3350#[repr(i32)]
3351pub enum TouchEventType {
3352 Unspecified = 0,
3354 Tap = 1,
3356 LongPress = 2,
3358 Scroll = 3,
3360 ActionClick = 4,
3362}
3363impl TouchEventType {
3364 pub fn as_str_name(&self) -> &'static str {
3369 match self {
3370 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3371 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3372 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3373 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3374 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3375 }
3376 }
3377 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3379 match value {
3380 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3381 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3382 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3383 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3384 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3385 _ => None,
3386 }
3387 }
3388}
3389#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3391#[repr(i32)]
3392pub enum HeatmapMode {
3393 Unspecified = 0,
3395 Total = 1,
3397 Median = 2,
3399}
3400impl HeatmapMode {
3401 pub fn as_str_name(&self) -> &'static str {
3406 match self {
3407 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3408 Self::Total => "HEATMAP_MODE_TOTAL",
3409 Self::Median => "HEATMAP_MODE_MEDIAN",
3410 }
3411 }
3412 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3414 match value {
3415 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3416 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3417 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3418 _ => None,
3419 }
3420 }
3421}
3422#[derive(Clone, PartialEq, ::prost::Message)]
3426pub struct InboxEntry {
3427 #[prost(string, tag="1")]
3430 pub delivery_id: ::prost::alloc::string::String,
3431 #[prost(message, optional, tag="2")]
3433 pub message: ::core::option::Option<Message>,
3434 #[prost(enumeration="DeliveryStatus", tag="3")]
3436 pub status: i32,
3437 #[prost(bool, tag="4")]
3439 pub read: bool,
3440 #[prost(message, optional, tag="5")]
3442 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3443 #[prost(enumeration="delivery::Kind", tag="6")]
3447 pub kind: i32,
3448 #[prost(string, tag="7")]
3451 pub parent_delivery_id: ::prost::alloc::string::String,
3452 #[prost(string, tag="8")]
3455 pub rendered_locale: ::prost::alloc::string::String,
3456 #[prost(message, optional, tag="9")]
3460 pub metadata: ::core::option::Option<DeliveryMetadata>,
3461}
3462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3464pub struct SyncRequest {
3465 #[prost(message, optional, tag="1")]
3467 pub since: ::core::option::Option<::prost_types::Timestamp>,
3468 #[prost(int32, tag="2")]
3471 pub limit: i32,
3472}
3473#[derive(Clone, PartialEq, ::prost::Message)]
3475pub struct SyncResponse {
3476 #[prost(message, repeated, tag="1")]
3478 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3479 #[prost(message, optional, tag="2")]
3481 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3482}
3483#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3485pub struct MarkReadRequest {
3486 #[prost(string, tag="1")]
3489 pub delivery_id: ::prost::alloc::string::String,
3490}
3491#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3493pub struct MarkReadResponse {
3494 #[prost(bool, tag="1")]
3496 pub success: bool,
3497}
3498#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3500pub struct GetMessageRequest {
3501 #[prost(string, tag="1")]
3504 pub delivery_id: ::prost::alloc::string::String,
3505}
3506#[derive(Clone, PartialEq, ::prost::Message)]
3508pub struct GetMessageResponse {
3509 #[prost(message, optional, tag="1")]
3511 pub entry: ::core::option::Option<InboxEntry>,
3512}
3513#[derive(Clone, PartialEq, ::prost::Message)]
3518pub struct Archetype {
3519 #[prost(string, tag="1")]
3521 pub label: ::prost::alloc::string::String,
3522 #[prost(string, tag="2")]
3524 pub description: ::prost::alloc::string::String,
3525 #[prost(float, tag="3")]
3527 pub percentage: f32,
3528 #[prost(map="string, double", tag="4")]
3535 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3536 #[prost(map="string, message", tag="5")]
3541 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3542 #[prost(message, optional, tag="6")]
3546 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3547 #[prost(message, optional, tag="7")]
3551 pub forecast: ::core::option::Option<ArchetypeForecast>,
3552 #[prost(message, repeated, tag="8")]
3558 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3559 #[prost(message, optional, tag="9")]
3562 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3563 #[prost(message, optional, tag="10")]
3567 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3568 #[prost(enumeration="ArchetypeSource", tag="11")]
3572 pub source: i32,
3573}
3574#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3579pub struct DimensionStats {
3580 #[prost(double, tag="1")]
3582 pub centroid: f64,
3583 #[prost(double, tag="2")]
3585 pub p25: f64,
3586 #[prost(double, tag="3")]
3588 pub p50: f64,
3589 #[prost(double, tag="4")]
3591 pub p75: f64,
3592 #[prost(double, tag="5")]
3595 pub group_p50: f64,
3596}
3597#[derive(Clone, PartialEq, ::prost::Message)]
3601pub struct TapHeatmap {
3602 #[prost(int32, tag="1")]
3604 pub width: i32,
3605 #[prost(int32, tag="2")]
3607 pub height: i32,
3608 #[prost(double, repeated, tag="3")]
3611 pub values: ::prost::alloc::vec::Vec<f64>,
3612 #[prost(int32, tag="4")]
3615 pub session_count: i32,
3616 #[prost(message, repeated, tag="5")]
3620 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3621}
3622#[derive(Clone, PartialEq, ::prost::Message)]
3624pub struct TapHeatmapLayer {
3625 #[prost(string, tag="1")]
3628 pub event_type: ::prost::alloc::string::String,
3629 #[prost(double, repeated, tag="2")]
3632 pub values: ::prost::alloc::vec::Vec<f64>,
3633}
3634#[derive(Clone, PartialEq, ::prost::Message)]
3636pub struct ArchetypeForecast {
3637 #[prost(message, repeated, tag="1")]
3640 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3641}
3642#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3644pub struct ForecastHorizon {
3645 #[prost(int32, tag="1")]
3647 pub days: i32,
3648 #[prost(double, tag="2")]
3651 pub predicted_share: f64,
3652 #[prost(double, tag="3")]
3654 pub lower: f64,
3655 #[prost(double, tag="4")]
3657 pub upper: f64,
3658 #[prost(enumeration="ConfidenceLevel", tag="5")]
3660 pub confidence: i32,
3661}
3662#[derive(Clone, PartialEq, ::prost::Message)]
3665pub struct ExemplarSession {
3666 #[prost(string, tag="1")]
3669 pub session_id: ::prost::alloc::string::String,
3670 #[prost(int32, tag="2")]
3673 pub rank: i32,
3674 #[prost(double, tag="3")]
3676 pub distance: f64,
3677 #[prost(int32, tag="4")]
3679 pub duration_seconds: i32,
3680 #[prost(string, tag="5")]
3684 pub platform: ::prost::alloc::string::String,
3685}
3686#[derive(Clone, PartialEq, ::prost::Message)]
3690pub struct ScreenDwell {
3691 #[prost(message, repeated, tag="1")]
3694 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3695}
3696#[derive(Clone, PartialEq, ::prost::Message)]
3697pub struct ScreenDwellEntry {
3698 #[prost(string, tag="1")]
3702 pub screen_name: ::prost::alloc::string::String,
3703 #[prost(double, tag="2")]
3705 pub median_seconds: f64,
3706 #[prost(double, tag="3")]
3708 pub p75_seconds: f64,
3709 #[prost(int32, tag="4")]
3711 pub session_count: i32,
3712}
3713#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3717pub struct ResponseTimeline {
3718 #[prost(message, optional, tag="1")]
3720 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3721 #[prost(message, optional, tag="2")]
3724 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3725 #[prost(message, optional, tag="3")]
3728 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3729 #[prost(int32, tag="4")]
3731 pub delivery_count: i32,
3732}
3733#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3735pub struct LatencyPercentiles {
3736 #[prost(double, tag="1")]
3737 pub p50: f64,
3738 #[prost(double, tag="2")]
3739 pub p75: f64,
3740 #[prost(double, tag="3")]
3741 pub p95: f64,
3742}
3743#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3746pub struct CohortPrediction {
3747 #[prost(float, tag="1")]
3749 pub predicted_ack_rate: f32,
3750 #[prost(float, tag="2")]
3752 pub confidence_low: f32,
3753 #[prost(float, tag="3")]
3755 pub confidence_high: f32,
3756 #[prost(enumeration="ConfidenceLevel", tag="4")]
3758 pub confidence_level: i32,
3759 #[prost(int32, tag="5")]
3761 pub data_point_count: i32,
3762}
3763#[derive(Clone, PartialEq, ::prost::Message)]
3765pub struct CampaignAdvisory {
3766 #[prost(message, optional, tag="1")]
3768 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3769 #[prost(int32, tag="2")]
3772 pub suggested_escalation_delay_minutes: i32,
3773 #[prost(message, repeated, tag="3")]
3775 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3776}
3777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3779pub struct GetGroupArchetypesRequest {
3780 #[prost(string, tag="1")]
3782 pub group_id: ::prost::alloc::string::String,
3783}
3784#[derive(Clone, PartialEq, ::prost::Message)]
3786pub struct GetGroupArchetypesResponse {
3787 #[prost(message, repeated, tag="1")]
3789 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3790 #[prost(int32, tag="2")]
3792 pub data_point_count: i32,
3793 #[prost(enumeration="PipelineState", tag="3")]
3797 pub pipeline_state: i32,
3798 #[prost(enumeration="ConfidenceLevel", tag="4")]
3803 pub confidence_level: i32,
3804}
3805#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3807pub struct PredictCampaignAckRequest {
3808 #[prost(string, tag="1")]
3810 pub group_id: ::prost::alloc::string::String,
3811 #[prost(string, tag="2")]
3813 pub template_type: ::prost::alloc::string::String,
3814 #[prost(int32, tag="3")]
3816 pub workflow_step_count: i32,
3817}
3818#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3820pub struct PredictCampaignAckResponse {
3821 #[prost(message, optional, tag="1")]
3823 pub prediction: ::core::option::Option<CohortPrediction>,
3824}
3825#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3827pub struct GetCampaignAdvisoryRequest {
3828 #[prost(string, tag="1")]
3830 pub group_id: ::prost::alloc::string::String,
3831 #[prost(string, tag="2")]
3833 pub template_id: ::prost::alloc::string::String,
3834 #[prost(int32, tag="3")]
3836 pub template_version: i32,
3837 #[prost(int32, tag="4")]
3839 pub workflow_step_count: i32,
3840}
3841#[derive(Clone, PartialEq, ::prost::Message)]
3843pub struct GetCampaignAdvisoryResponse {
3844 #[prost(message, optional, tag="1")]
3846 pub advisory: ::core::option::Option<CampaignAdvisory>,
3847}
3848#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3850pub struct GetInsightNarrativeRequest {
3851 #[prost(string, tag="1")]
3853 pub group_id: ::prost::alloc::string::String,
3854 #[prost(string, tag="2")]
3856 pub prompt_name: ::prost::alloc::string::String,
3857}
3858#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3860pub struct GetInsightNarrativeResponse {
3861 #[prost(string, tag="1")]
3863 pub narrative: ::prost::alloc::string::String,
3864 #[prost(message, optional, tag="2")]
3866 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3867 #[prost(string, tag="3")]
3869 pub model_id: ::prost::alloc::string::String,
3870}
3871#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3874pub struct TriggerMlPipelineRequest {
3875}
3876#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3878pub struct TriggerMlPipelineResponse {
3879 #[prost(int32, tag="1")]
3881 pub remaining_this_month: i32,
3882 #[prost(message, optional, tag="2")]
3884 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3885}
3886#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3890pub struct TriggerArchetypeClusteringRequest {
3891 #[prost(string, tag="1")]
3893 pub group_id: ::prost::alloc::string::String,
3894}
3895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3897pub struct TriggerArchetypeClusteringResponse {
3898 #[prost(string, tag="1")]
3901 pub workflow_id: ::prost::alloc::string::String,
3902 #[prost(int32, tag="2")]
3905 pub remaining_this_month: i32,
3906 #[prost(message, optional, tag="3")]
3909 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3910}
3911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3915pub struct GenerateCampaignBodyDraftRequest {
3916 #[prost(string, tag="1")]
3918 pub group_id: ::prost::alloc::string::String,
3919 #[prost(string, tag="2")]
3921 pub archetype_label: ::prost::alloc::string::String,
3922 #[prost(string, tag="3")]
3925 pub lane_action: ::prost::alloc::string::String,
3926}
3927#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3929pub struct GenerateCampaignBodyDraftResponse {
3930 #[prost(string, tag="1")]
3933 pub body_markdown: ::prost::alloc::string::String,
3934}
3935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3939#[repr(i32)]
3940pub enum ConfidenceLevel {
3941 Unspecified = 0,
3942 Low = 1,
3944 Medium = 2,
3946 High = 3,
3948}
3949impl ConfidenceLevel {
3950 pub fn as_str_name(&self) -> &'static str {
3955 match self {
3956 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3957 Self::Low => "CONFIDENCE_LEVEL_LOW",
3958 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3959 Self::High => "CONFIDENCE_LEVEL_HIGH",
3960 }
3961 }
3962 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3964 match value {
3965 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3966 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3967 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3968 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3969 _ => None,
3970 }
3971 }
3972}
3973#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3979#[repr(i32)]
3980pub enum PipelineState {
3981 Unspecified = 0,
3982 NeverRun = 1,
3985 BelowThreshold = 2,
3989 NoClusters = 3,
3993 Ready = 4,
3995}
3996impl PipelineState {
3997 pub fn as_str_name(&self) -> &'static str {
4002 match self {
4003 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
4004 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
4005 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
4006 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
4007 Self::Ready => "PIPELINE_STATE_READY",
4008 }
4009 }
4010 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4012 match value {
4013 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
4014 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
4015 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
4016 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
4017 "PIPELINE_STATE_READY" => Some(Self::Ready),
4018 _ => None,
4019 }
4020 }
4021}
4022#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4028#[repr(i32)]
4029pub enum ArchetypeSource {
4030 Unspecified = 0,
4031 Ml = 1,
4034 Provisional = 2,
4039}
4040impl ArchetypeSource {
4041 pub fn as_str_name(&self) -> &'static str {
4046 match self {
4047 Self::Unspecified => "ARCHETYPE_SOURCE_UNSPECIFIED",
4048 Self::Ml => "ARCHETYPE_SOURCE_ML",
4049 Self::Provisional => "ARCHETYPE_SOURCE_PROVISIONAL",
4050 }
4051 }
4052 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4054 match value {
4055 "ARCHETYPE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
4056 "ARCHETYPE_SOURCE_ML" => Some(Self::Ml),
4057 "ARCHETYPE_SOURCE_PROVISIONAL" => Some(Self::Provisional),
4058 _ => None,
4059 }
4060 }
4061}
4062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4069pub struct Reachability {
4070 #[prost(string, tag="1")]
4072 pub id: ::prost::alloc::string::String,
4073 #[prost(string, tag="2")]
4075 pub org_id: ::prost::alloc::string::String,
4076 #[prost(string, tag="3")]
4078 pub user_id: ::prost::alloc::string::String,
4079 #[prost(enumeration="ChannelName", tag="4")]
4081 pub channel: i32,
4082 #[prost(message, optional, tag="5")]
4084 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4085 #[prost(message, optional, tag="6")]
4087 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4088 #[prost(string, optional, tag="7")]
4092 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4093}
4094#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4098pub struct RegionPolicy {
4099 #[prost(string, tag="1")]
4100 pub org_id: ::prost::alloc::string::String,
4101 #[prost(enumeration="ChannelName", tag="2")]
4102 pub channel: i32,
4103 #[prost(string, repeated, tag="3")]
4106 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4107 #[prost(message, optional, tag="4")]
4108 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4109}
4110#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4118#[repr(i32)]
4119pub enum DispatchStatus {
4120 Unspecified = 0,
4122 Sent = 1,
4124 Failed = 2,
4127 Deduped = 3,
4131}
4132impl DispatchStatus {
4133 pub fn as_str_name(&self) -> &'static str {
4138 match self {
4139 Self::Unspecified => "DISPATCH_STATUS_UNSPECIFIED",
4140 Self::Sent => "DISPATCH_STATUS_SENT",
4141 Self::Failed => "DISPATCH_STATUS_FAILED",
4142 Self::Deduped => "DISPATCH_STATUS_DEDUPED",
4143 }
4144 }
4145 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4147 match value {
4148 "DISPATCH_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
4149 "DISPATCH_STATUS_SENT" => Some(Self::Sent),
4150 "DISPATCH_STATUS_FAILED" => Some(Self::Failed),
4151 "DISPATCH_STATUS_DEDUPED" => Some(Self::Deduped),
4152 _ => None,
4153 }
4154 }
4155}
4156#[derive(Clone, PartialEq, ::prost::Message)]
4163pub struct DispatchToChannelRequest {
4164 #[prost(string, tag="1")]
4166 pub dispatch_id: ::prost::alloc::string::String,
4167 #[prost(string, tag="2")]
4168 pub org_id: ::prost::alloc::string::String,
4169 #[prost(string, tag="3")]
4170 pub user_id: ::prost::alloc::string::String,
4171 #[prost(enumeration="ChannelName", tag="4")]
4173 pub channel: i32,
4174 #[prost(string, tag="5")]
4176 pub template_id: ::prost::alloc::string::String,
4177 #[prost(map="string, string", tag="6")]
4179 pub template_vars: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4180 #[prost(string, tag="7")]
4182 pub locale: ::prost::alloc::string::String,
4183 #[prost(string, optional, tag="8")]
4186 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4187}
4188#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4189pub struct DispatchToChannelResponse {
4190 #[prost(string, tag="1")]
4192 pub dispatch_id: ::prost::alloc::string::String,
4193 #[prost(enumeration="DispatchStatus", tag="2")]
4195 pub status: i32,
4196 #[prost(string, optional, tag="3")]
4199 pub failure_reason: ::core::option::Option<::prost::alloc::string::String>,
4200}
4201#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4208pub struct UpsertReachabilityRequest {
4209 #[prost(string, tag="1")]
4210 pub org_id: ::prost::alloc::string::String,
4211 #[prost(string, tag="2")]
4212 pub user_id: ::prost::alloc::string::String,
4213 #[prost(enumeration="ChannelName", tag="3")]
4214 pub channel: i32,
4215 #[prost(string, tag="4")]
4219 pub identifier_plaintext: ::prost::alloc::string::String,
4220 #[prost(string, optional, tag="5")]
4223 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4224}
4225#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4226pub struct UpsertReachabilityResponse {
4227 #[prost(message, optional, tag="1")]
4230 pub reachability: ::core::option::Option<Reachability>,
4231}
4232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4238pub struct RemoveReachabilityRequest {
4239 #[prost(string, tag="1")]
4240 pub org_id: ::prost::alloc::string::String,
4241 #[prost(string, tag="2")]
4242 pub user_id: ::prost::alloc::string::String,
4243 #[prost(enumeration="ChannelName", tag="3")]
4244 pub channel: i32,
4245}
4246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4247pub struct RemoveReachabilityResponse {
4248 #[prost(bool, tag="1")]
4251 pub removed: bool,
4252}
4253#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4258pub struct GetReachabilityRequest {
4259 #[prost(string, tag="1")]
4260 pub org_id: ::prost::alloc::string::String,
4261 #[prost(string, tag="2")]
4262 pub user_id: ::prost::alloc::string::String,
4263 #[prost(enumeration="ChannelName", tag="3")]
4264 pub channel: i32,
4265}
4266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4267pub struct GetReachabilityResponse {
4268 #[prost(message, optional, tag="1")]
4270 pub reachability: ::core::option::Option<Reachability>,
4271}
4272#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4279pub struct ListReachabilityForUserRequest {
4280 #[prost(string, tag="1")]
4281 pub org_id: ::prost::alloc::string::String,
4282 #[prost(string, tag="2")]
4283 pub user_id: ::prost::alloc::string::String,
4284}
4285#[derive(Clone, PartialEq, ::prost::Message)]
4286pub struct ListReachabilityForUserResponse {
4287 #[prost(message, repeated, tag="1")]
4289 pub reachabilities: ::prost::alloc::vec::Vec<Reachability>,
4290}
4291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4294pub struct GetRegionPolicyRequest {
4295 #[prost(string, tag="1")]
4296 pub org_id: ::prost::alloc::string::String,
4297 #[prost(enumeration="ChannelName", tag="2")]
4298 pub channel: i32,
4299}
4300#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4301pub struct GetRegionPolicyResponse {
4302 #[prost(message, optional, tag="1")]
4305 pub policy: ::core::option::Option<RegionPolicy>,
4306}
4307#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4309pub struct SetRegionPolicyRequest {
4310 #[prost(string, tag="1")]
4311 pub org_id: ::prost::alloc::string::String,
4312 #[prost(enumeration="ChannelName", tag="2")]
4313 pub channel: i32,
4314 #[prost(string, repeated, tag="3")]
4316 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4317}
4318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4319pub struct SetRegionPolicyResponse {
4320 #[prost(message, optional, tag="1")]
4321 pub policy: ::core::option::Option<RegionPolicy>,
4322}
4323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4330pub struct GetCostCapPolicyRequest {
4331 #[prost(string, tag="1")]
4332 pub org_id: ::prost::alloc::string::String,
4333 #[prost(enumeration="ChannelName", tag="2")]
4334 pub channel: i32,
4335}
4336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4337pub struct GetCostCapPolicyResponse {
4338 #[prost(string, tag="1")]
4339 pub org_id: ::prost::alloc::string::String,
4340 #[prost(enumeration="ChannelName", tag="2")]
4341 pub channel: i32,
4342 #[prost(int64, tag="3")]
4344 pub cap_micros: i64,
4345 #[prost(int64, tag="4")]
4347 pub used_micros: i64,
4348 #[prost(int32, tag="5")]
4350 pub period_yyyymm: i32,
4351}
4352#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4355pub struct SetCostCapPolicyRequest {
4356 #[prost(string, tag="1")]
4357 pub org_id: ::prost::alloc::string::String,
4358 #[prost(enumeration="ChannelName", tag="2")]
4359 pub channel: i32,
4360 #[prost(int64, tag="3")]
4361 pub cap_micros: i64,
4362}
4363#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4364pub struct SetCostCapPolicyResponse {
4365 #[prost(string, tag="1")]
4366 pub org_id: ::prost::alloc::string::String,
4367 #[prost(enumeration="ChannelName", tag="2")]
4368 pub channel: i32,
4369 #[prost(int64, tag="3")]
4370 pub cap_micros: i64,
4371 #[prost(int64, tag="4")]
4372 pub used_micros: i64,
4373 #[prost(int32, tag="5")]
4374 pub period_yyyymm: i32,
4375}
4376#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4381pub struct GetOrgWebhookConfigRequest {
4382 #[prost(string, tag="1")]
4383 pub org_id: ::prost::alloc::string::String,
4384}
4385#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4386pub struct GetOrgWebhookConfigResponse {
4387 #[prost(string, tag="1")]
4388 pub org_id: ::prost::alloc::string::String,
4389 #[prost(string, tag="2")]
4392 pub url: ::prost::alloc::string::String,
4393 #[prost(bool, tag="3")]
4395 pub enabled: bool,
4396 #[prost(bool, tag="4")]
4399 pub has_secret: bool,
4400 #[prost(message, optional, tag="5")]
4401 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4402 #[prost(message, optional, tag="6")]
4403 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4404}
4405#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4410pub struct SetOrgWebhookConfigRequest {
4411 #[prost(string, tag="1")]
4412 pub org_id: ::prost::alloc::string::String,
4413 #[prost(string, tag="2")]
4416 pub url: ::prost::alloc::string::String,
4417 #[prost(bool, tag="3")]
4418 pub enabled: bool,
4419 #[prost(string, optional, tag="4")]
4423 pub secret: ::core::option::Option<::prost::alloc::string::String>,
4424}
4425#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4426pub struct SetOrgWebhookConfigResponse {
4427 #[prost(string, tag="1")]
4428 pub org_id: ::prost::alloc::string::String,
4429 #[prost(string, tag="2")]
4430 pub url: ::prost::alloc::string::String,
4431 #[prost(bool, tag="3")]
4432 pub enabled: bool,
4433 #[prost(bool, tag="4")]
4434 pub has_secret: bool,
4435 #[prost(message, optional, tag="5")]
4436 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4437 #[prost(message, optional, tag="6")]
4438 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4439}
4440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4448pub struct CreateChannelConnectLinkRequest {
4449 #[prost(string, tag="1")]
4450 pub org_id: ::prost::alloc::string::String,
4451 #[prost(string, tag="2")]
4454 pub user_id: ::prost::alloc::string::String,
4455 #[prost(enumeration="ChannelName", tag="3")]
4459 pub channel: i32,
4460}
4461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4462pub struct CreateChannelConnectLinkResponse {
4463 #[prost(string, tag="1")]
4466 pub connect_url: ::prost::alloc::string::String,
4467 #[prost(string, tag="2")]
4471 pub token: ::prost::alloc::string::String,
4472 #[prost(message, optional, tag="3")]
4475 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4476}
4477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4482pub struct InviteLink {
4483 #[prost(string, tag="1")]
4485 pub id: ::prost::alloc::string::String,
4486 #[prost(string, tag="2")]
4488 pub token: ::prost::alloc::string::String,
4489 #[prost(string, tag="3")]
4491 pub role_id: ::prost::alloc::string::String,
4492 #[prost(int32, tag="4")]
4495 pub max_uses: i32,
4496 #[prost(int32, tag="5")]
4498 pub use_count: i32,
4499 #[prost(message, optional, tag="6")]
4501 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4502 #[prost(message, optional, tag="7")]
4504 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
4505 #[prost(string, tag="8")]
4507 pub created_by: ::prost::alloc::string::String,
4508 #[prost(message, optional, tag="9")]
4510 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4511 #[prost(string, tag="10")]
4514 pub data_governance_region: ::prost::alloc::string::String,
4515}
4516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4518pub struct CreateInviteLinkRequest {
4519 #[prost(string, tag="1")]
4521 pub role_id: ::prost::alloc::string::String,
4522 #[prost(int32, tag="2")]
4524 pub max_uses: i32,
4525 #[prost(int32, tag="3")]
4528 pub expires_in_hours: i32,
4529 #[prost(string, tag="4")]
4532 pub data_governance_region: ::prost::alloc::string::String,
4533}
4534#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4536pub struct CreateInviteLinkResponse {
4537 #[prost(message, optional, tag="1")]
4539 pub invite_link: ::core::option::Option<InviteLink>,
4540 #[prost(string, tag="2")]
4542 pub url: ::prost::alloc::string::String,
4543}
4544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4546pub struct ListInviteLinksRequest {
4547}
4548#[derive(Clone, PartialEq, ::prost::Message)]
4550pub struct ListInviteLinksResponse {
4551 #[prost(message, repeated, tag="1")]
4553 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
4554}
4555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4557pub struct RevokeInviteLinkRequest {
4558 #[prost(string, tag="1")]
4560 pub invite_link_id: ::prost::alloc::string::String,
4561}
4562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4564pub struct RevokeInviteLinkResponse {
4565}
4566#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4568pub struct RedeemInviteLinkRequest {
4569 #[prost(string, tag="1")]
4571 pub token: ::prost::alloc::string::String,
4572}
4573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4575pub struct RedeemInviteLinkResponse {
4576 #[prost(string, tag="1")]
4578 pub organization_name: ::prost::alloc::string::String,
4579}
4580#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4582pub struct ValidateInviteLinkRequest {
4583 #[prost(string, tag="1")]
4585 pub token: ::prost::alloc::string::String,
4586 #[prost(string, tag="2")]
4589 pub email: ::prost::alloc::string::String,
4590}
4591#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4593pub struct ValidateInviteLinkResponse {
4594 #[prost(string, tag="1")]
4596 pub organization_name: ::prost::alloc::string::String,
4597}
4598#[derive(Clone, PartialEq, ::prost::Message)]
4602pub struct InviteUserRequest {
4603 #[prost(string, tag="1")]
4606 pub email: ::prost::alloc::string::String,
4607 #[prost(string, tag="2")]
4610 pub name: ::prost::alloc::string::String,
4611 #[prost(string, tag="4")]
4613 pub role_id: ::prost::alloc::string::String,
4614 #[prost(message, optional, tag="5")]
4616 pub profile: ::core::option::Option<UserProfile>,
4617 #[prost(string, tag="6")]
4620 pub data_governance_region: ::prost::alloc::string::String,
4621}
4622#[derive(Clone, PartialEq, ::prost::Message)]
4624pub struct InviteUserResponse {
4625 #[prost(message, optional, tag="1")]
4627 pub user: ::core::option::Option<User>,
4628}
4629#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4631pub struct GetUserRequest {
4632 #[prost(string, tag="1")]
4634 pub user_id: ::prost::alloc::string::String,
4635}
4636#[derive(Clone, PartialEq, ::prost::Message)]
4638pub struct GetUserResponse {
4639 #[prost(message, optional, tag="1")]
4641 pub user: ::core::option::Option<User>,
4642}
4643#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4645pub struct ListUsersRequest {
4646 #[prost(message, optional, tag="1")]
4648 pub pagination: ::core::option::Option<Pagination>,
4649}
4650#[derive(Clone, PartialEq, ::prost::Message)]
4652pub struct ListUsersResponse {
4653 #[prost(message, repeated, tag="1")]
4655 pub users: ::prost::alloc::vec::Vec<User>,
4656 #[prost(message, optional, tag="2")]
4658 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4659}
4660#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4662pub struct UpdateUserRoleRequest {
4663 #[prost(string, tag="1")]
4665 pub user_id: ::prost::alloc::string::String,
4666 #[prost(string, tag="2")]
4668 pub role_id: ::prost::alloc::string::String,
4669}
4670#[derive(Clone, PartialEq, ::prost::Message)]
4672pub struct UpdateUserRoleResponse {
4673 #[prost(message, optional, tag="1")]
4675 pub user: ::core::option::Option<User>,
4676}
4677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4679pub struct DeactivateUserRequest {
4680 #[prost(string, tag="1")]
4682 pub user_id: ::prost::alloc::string::String,
4683}
4684#[derive(Clone, PartialEq, ::prost::Message)]
4686pub struct DeactivateUserResponse {
4687 #[prost(message, optional, tag="1")]
4689 pub user: ::core::option::Option<User>,
4690}
4691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4693pub struct ReactivateUserRequest {
4694 #[prost(string, tag="1")]
4696 pub user_id: ::prost::alloc::string::String,
4697}
4698#[derive(Clone, PartialEq, ::prost::Message)]
4700pub struct ReactivateUserResponse {
4701 #[prost(message, optional, tag="1")]
4703 pub user: ::core::option::Option<User>,
4704}
4705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4707pub struct RevokeInviteRequest {
4708 #[prost(string, tag="1")]
4711 pub user_id: ::prost::alloc::string::String,
4712}
4713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4715pub struct RevokeInviteResponse {
4716}
4717#[derive(Clone, PartialEq, ::prost::Message)]
4719pub struct UpdateUserProfileRequest {
4720 #[prost(string, tag="1")]
4723 pub user_id: ::prost::alloc::string::String,
4724 #[prost(message, optional, tag="2")]
4726 pub profile: ::core::option::Option<UserProfile>,
4727}
4728#[derive(Clone, PartialEq, ::prost::Message)]
4730pub struct UpdateUserProfileResponse {
4731 #[prost(message, optional, tag="1")]
4733 pub user: ::core::option::Option<User>,
4734}
4735#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4737pub struct GetUserSettingsRequest {
4738}
4739#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4741pub struct GetUserSettingsResponse {
4742 #[prost(message, optional, tag="1")]
4744 pub settings: ::core::option::Option<UserSettings>,
4745}
4746#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4748pub struct UpdateUserSettingsRequest {
4749 #[prost(message, optional, tag="1")]
4752 pub settings: ::core::option::Option<UserSettings>,
4753}
4754#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4756pub struct UpdateUserSettingsResponse {
4757 #[prost(message, optional, tag="1")]
4759 pub settings: ::core::option::Option<UserSettings>,
4760}
4761#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4763pub struct BulkInviteUsersRequest {
4764 #[prost(string, repeated, tag="1")]
4767 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4768 #[prost(string, tag="2")]
4770 pub role_id: ::prost::alloc::string::String,
4771}
4772#[derive(Clone, PartialEq, ::prost::Message)]
4774pub struct BulkInviteResult {
4775 #[prost(string, tag="1")]
4777 pub email: ::prost::alloc::string::String,
4778 #[prost(bool, tag="2")]
4780 pub success: bool,
4781 #[prost(string, tag="3")]
4784 pub error: ::prost::alloc::string::String,
4785 #[prost(message, optional, tag="4")]
4787 pub user: ::core::option::Option<User>,
4788}
4789#[derive(Clone, PartialEq, ::prost::Message)]
4791pub struct BulkInviteUsersResponse {
4792 #[prost(message, repeated, tag="1")]
4794 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
4795 #[prost(int32, tag="2")]
4797 pub invited_count: i32,
4798 #[prost(int32, tag="3")]
4800 pub failed_count: i32,
4801}
4802#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4806pub struct ConfirmPasskeyEnrollmentRequest {
4807}
4808#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4810pub struct ConfirmPasskeyEnrollmentResponse {
4811 #[prost(bool, tag="1")]
4813 pub confirmed: bool,
4814}
4815#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4817pub struct UpdateUserRegionRequest {
4818 #[prost(string, tag="1")]
4820 pub user_id: ::prost::alloc::string::String,
4821 #[prost(string, tag="2")]
4824 pub data_governance_region: ::prost::alloc::string::String,
4825}
4826#[derive(Clone, PartialEq, ::prost::Message)]
4828pub struct UpdateUserRegionResponse {
4829 #[prost(message, optional, tag="1")]
4831 pub user: ::core::option::Option<User>,
4832 #[prost(string, tag="2")]
4835 pub migration_workflow_id: ::prost::alloc::string::String,
4836}
4837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4846pub struct Pepper {
4847 #[prost(int32, tag="1")]
4849 pub version: i32,
4850 #[prost(bytes="vec", tag="2")]
4854 pub key_material: ::prost::alloc::vec::Vec<u8>,
4855}
4856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4863pub struct GetPeppersRequest {
4864 #[prost(string, tag="1")]
4866 pub org_id: ::prost::alloc::string::String,
4867 #[prost(string, tag="2")]
4870 pub purpose: ::prost::alloc::string::String,
4871}
4872#[derive(Clone, PartialEq, ::prost::Message)]
4873pub struct GetPeppersResponse {
4874 #[prost(message, repeated, tag="1")]
4879 pub peppers: ::prost::alloc::vec::Vec<Pepper>,
4880}
4881#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4886pub struct SsoAttributeMapping {
4887 #[prost(string, tag="1")]
4890 pub idp_claim: ::prost::alloc::string::String,
4891 #[prost(string, tag="2")]
4895 pub profile_field: ::prost::alloc::string::String,
4896}
4897#[derive(Clone, PartialEq, ::prost::Message)]
4899pub struct Organization {
4900 #[prost(string, tag="1")]
4902 pub id: ::prost::alloc::string::String,
4903 #[prost(string, tag="2")]
4906 pub name: ::prost::alloc::string::String,
4907 #[prost(message, optional, tag="3")]
4909 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4910 #[prost(message, optional, tag="4")]
4912 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4913 #[prost(enumeration="Industry", tag="5")]
4915 pub industry: i32,
4916 #[prost(enumeration="CompanySize", tag="6")]
4918 pub company_size: i32,
4919 #[prost(message, repeated, tag="7")]
4922 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4923 #[prost(string, tag="8")]
4927 pub default_locale: ::prost::alloc::string::String,
4928 #[prost(enumeration="OrgType", tag="9")]
4930 pub org_type: i32,
4931 #[prost(message, optional, tag="10")]
4933 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4934 #[prost(string, tag="11")]
4937 pub data_governance_region: ::prost::alloc::string::String,
4938 #[prost(string, tag="12")]
4941 pub data_content_region: ::prost::alloc::string::String,
4942 #[prost(int32, tag="13")]
4947 pub ml_retrain_cold_threshold: i32,
4948 #[prost(bool, tag="14")]
4950 pub ml_cancelled_counts: bool,
4951 #[prost(int32, tag="15")]
4953 pub ml_manual_limit_monthly: i32,
4954 #[prost(int32, tag="16")]
4956 pub ml_manual_retrains_used: i32,
4957 #[prost(bool, tag="17")]
4959 pub ml_needs_retrain: bool,
4960 #[prost(int32, tag="18")]
4962 pub campaigns_since_last_training: i32,
4963 #[prost(int32, tag="19")]
4965 pub total_completed_campaigns: i32,
4966 #[prost(message, optional, tag="20")]
4968 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4969 #[prost(bool, optional, tag="21")]
4974 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
4975 #[prost(bool, tag="22")]
4981 pub provisional_archetypes_enabled: bool,
4982}
4983#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4987pub struct CreateOrganizationRequest {
4988 #[prost(string, tag="1")]
4991 pub name: ::prost::alloc::string::String,
4992 #[prost(enumeration="Industry", tag="2")]
4994 pub industry: i32,
4995 #[prost(enumeration="CompanySize", tag="3")]
4997 pub company_size: i32,
4998 #[prost(string, tag="4")]
5001 pub access_code: ::prost::alloc::string::String,
5002 #[prost(string, tag="5")]
5005 pub data_governance_region: ::prost::alloc::string::String,
5006 #[prost(string, tag="6")]
5009 pub fixture_id: ::prost::alloc::string::String,
5010}
5011#[derive(Clone, PartialEq, ::prost::Message)]
5013pub struct CreateOrganizationResponse {
5014 #[prost(message, optional, tag="1")]
5016 pub organization: ::core::option::Option<Organization>,
5017 #[prost(message, optional, tag="2")]
5019 pub admin_user: ::core::option::Option<User>,
5020}
5021#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5023pub struct GetOrganizationRequest {
5024}
5025#[derive(Clone, PartialEq, ::prost::Message)]
5027pub struct GetOrganizationResponse {
5028 #[prost(message, optional, tag="1")]
5030 pub organization: ::core::option::Option<Organization>,
5031}
5032#[derive(Clone, PartialEq, ::prost::Message)]
5034pub struct UpdateOrganizationRequest {
5035 #[prost(string, tag="1")]
5038 pub name: ::prost::alloc::string::String,
5039 #[prost(message, optional, tag="2")]
5041 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
5042 #[prost(enumeration="Industry", tag="3")]
5044 pub industry: i32,
5045 #[prost(enumeration="CompanySize", tag="4")]
5047 pub company_size: i32,
5048 #[prost(string, tag="5")]
5051 pub default_locale: ::prost::alloc::string::String,
5052 #[prost(int32, tag="6")]
5054 pub ml_retrain_cold_threshold: i32,
5055 #[prost(bool, optional, tag="7")]
5058 pub ml_cancelled_counts: ::core::option::Option<bool>,
5059 #[prost(int32, tag="8")]
5062 pub ml_manual_limit_monthly: i32,
5063 #[prost(bool, optional, tag="9")]
5065 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
5066 #[prost(bool, optional, tag="10")]
5070 pub provisional_archetypes_enabled: ::core::option::Option<bool>,
5071}
5072#[derive(Clone, PartialEq, ::prost::Message)]
5074pub struct UpdateOrganizationResponse {
5075 #[prost(message, optional, tag="1")]
5077 pub organization: ::core::option::Option<Organization>,
5078}
5079#[derive(Clone, PartialEq, ::prost::Message)]
5081pub struct UpdateSsoAttributeMappingsRequest {
5082 #[prost(message, repeated, tag="1")]
5084 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
5085}
5086#[derive(Clone, PartialEq, ::prost::Message)]
5088pub struct UpdateSsoAttributeMappingsResponse {
5089 #[prost(message, optional, tag="1")]
5091 pub organization: ::core::option::Option<Organization>,
5092}
5093#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5095pub struct RotateAnalyticsSaltRequest {
5096 #[prost(int32, tag="1")]
5098 pub new_bucket_count: i32,
5099}
5100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5102pub struct RotateAnalyticsSaltResponse {
5103 #[prost(int32, tag="1")]
5105 pub bucket_count: i32,
5106}
5107#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5109pub struct UpdateAnalyticsEpsilonRequest {
5110 #[prost(float, tag="1")]
5112 pub epsilon: f32,
5113}
5114#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5116pub struct UpdateAnalyticsEpsilonResponse {
5117 #[prost(float, tag="1")]
5119 pub epsilon: f32,
5120}
5121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5123pub struct CreateSandboxOrganizationRequest {
5124 #[prost(string, tag="1")]
5127 pub name: ::prost::alloc::string::String,
5128 #[prost(message, optional, tag="2")]
5131 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5132 #[prost(string, tag="3")]
5135 pub data_governance_region: ::prost::alloc::string::String,
5136 #[prost(string, tag="4")]
5140 pub fixture_id: ::prost::alloc::string::String,
5141}
5142#[derive(Clone, PartialEq, ::prost::Message)]
5144pub struct CreateSandboxOrganizationResponse {
5145 #[prost(message, optional, tag="1")]
5147 pub organization: ::core::option::Option<Organization>,
5148 #[prost(message, optional, tag="2")]
5150 pub admin_user: ::core::option::Option<User>,
5151}
5152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5155pub struct DeleteSandboxOrganizationRequest {
5156 #[prost(string, tag="1")]
5158 pub org_id: ::prost::alloc::string::String,
5159}
5160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5163pub struct DeleteSandboxOrganizationResponse {
5164 #[prost(string, tag="1")]
5166 pub workflow_id: ::prost::alloc::string::String,
5167}
5168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5170pub struct SandboxFixture {
5171 #[prost(string, tag="1")]
5174 pub id: ::prost::alloc::string::String,
5175 #[prost(string, tag="2")]
5177 pub name: ::prost::alloc::string::String,
5178 #[prost(string, tag="3")]
5180 pub description: ::prost::alloc::string::String,
5181 #[prost(bool, tag="4")]
5184 pub is_default: bool,
5185}
5186#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5189pub struct ListSandboxFixturesRequest {
5190}
5191#[derive(Clone, PartialEq, ::prost::Message)]
5193pub struct ListSandboxFixturesResponse {
5194 #[prost(message, repeated, tag="1")]
5196 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
5197}
5198#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5201pub struct ListUserOrganizationsRequest {
5202}
5203#[derive(Clone, PartialEq, ::prost::Message)]
5205pub struct ListUserOrganizationsResponse {
5206 #[prost(message, repeated, tag="1")]
5209 pub organizations: ::prost::alloc::vec::Vec<Organization>,
5210}
5211#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5216pub struct ListUserSandboxesRequest {
5217}
5218#[derive(Clone, PartialEq, ::prost::Message)]
5220pub struct ListUserSandboxesResponse {
5221 #[prost(message, repeated, tag="1")]
5226 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
5227}
5228#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5232pub struct OrgPrivacyToggle {
5233 #[prost(bool, tag="1")]
5235 pub enabled: bool,
5236 #[prost(string, tag="2")]
5239 pub last_changed_by_email: ::prost::alloc::string::String,
5240 #[prost(message, optional, tag="3")]
5243 pub last_changed_at: ::core::option::Option<::prost_types::Timestamp>,
5244}
5245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5249pub struct OrgPrivacySettings {
5250 #[prost(message, optional, tag="1")]
5252 pub ai_clustering: ::core::option::Option<OrgPrivacyToggle>,
5253 #[prost(message, optional, tag="2")]
5255 pub behavioral_analytics: ::core::option::Option<OrgPrivacyToggle>,
5256 #[prost(message, optional, tag="3")]
5258 pub third_party_channels: ::core::option::Option<OrgPrivacyToggle>,
5259}
5260#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5263pub struct GetOrgPrivacySettingsRequest {
5264}
5265#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5268pub struct GetOrgPrivacySettingsResponse {
5269 #[prost(message, optional, tag="1")]
5271 pub settings: ::core::option::Option<OrgPrivacySettings>,
5272}
5273#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5276pub struct UpdateOrgPrivacySettingsRequest {
5277 #[prost(bool, optional, tag="1")]
5280 pub ai_clustering_enabled: ::core::option::Option<bool>,
5281 #[prost(bool, optional, tag="2")]
5283 pub behavioral_analytics_enabled: ::core::option::Option<bool>,
5284 #[prost(bool, optional, tag="3")]
5287 pub third_party_channels_enabled: ::core::option::Option<bool>,
5288}
5289#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5291pub struct UpdateOrgPrivacySettingsResponse {
5292 #[prost(message, optional, tag="1")]
5295 pub settings: ::core::option::Option<OrgPrivacySettings>,
5296}
5297#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5301#[repr(i32)]
5302pub enum Industry {
5303 Unspecified = 0,
5304 Technology = 1,
5305 Finance = 2,
5306 Healthcare = 3,
5307 Education = 4,
5308 Retail = 5,
5309 Manufacturing = 6,
5310 Media = 7,
5311 Other = 8,
5312}
5313impl Industry {
5314 pub fn as_str_name(&self) -> &'static str {
5319 match self {
5320 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
5321 Self::Technology => "INDUSTRY_TECHNOLOGY",
5322 Self::Finance => "INDUSTRY_FINANCE",
5323 Self::Healthcare => "INDUSTRY_HEALTHCARE",
5324 Self::Education => "INDUSTRY_EDUCATION",
5325 Self::Retail => "INDUSTRY_RETAIL",
5326 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
5327 Self::Media => "INDUSTRY_MEDIA",
5328 Self::Other => "INDUSTRY_OTHER",
5329 }
5330 }
5331 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5333 match value {
5334 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
5335 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
5336 "INDUSTRY_FINANCE" => Some(Self::Finance),
5337 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
5338 "INDUSTRY_EDUCATION" => Some(Self::Education),
5339 "INDUSTRY_RETAIL" => Some(Self::Retail),
5340 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
5341 "INDUSTRY_MEDIA" => Some(Self::Media),
5342 "INDUSTRY_OTHER" => Some(Self::Other),
5343 _ => None,
5344 }
5345 }
5346}
5347#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5349#[repr(i32)]
5350pub enum CompanySize {
5351 Unspecified = 0,
5352 CompanySize1200 = 1,
5353 CompanySize200500 = 2,
5354 CompanySize5001000 = 3,
5355 CompanySize10005000 = 4,
5356 CompanySize5000Plus = 5,
5357}
5358impl CompanySize {
5359 pub fn as_str_name(&self) -> &'static str {
5364 match self {
5365 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
5366 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
5367 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
5368 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
5369 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
5370 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
5371 }
5372 }
5373 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5375 match value {
5376 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
5377 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
5378 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
5379 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
5380 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
5381 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
5382 _ => None,
5383 }
5384 }
5385}
5386#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5388#[repr(i32)]
5389pub enum OrgType {
5390 Unspecified = 0,
5391 Standard = 1,
5392 Sandbox = 2,
5393 Staff = 3,
5396}
5397impl OrgType {
5398 pub fn as_str_name(&self) -> &'static str {
5403 match self {
5404 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
5405 Self::Standard => "ORG_TYPE_STANDARD",
5406 Self::Sandbox => "ORG_TYPE_SANDBOX",
5407 Self::Staff => "ORG_TYPE_STAFF",
5408 }
5409 }
5410 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5412 match value {
5413 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5414 "ORG_TYPE_STANDARD" => Some(Self::Standard),
5415 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
5416 "ORG_TYPE_STAFF" => Some(Self::Staff),
5417 _ => None,
5418 }
5419 }
5420}
5421#[derive(Clone, PartialEq, ::prost::Message)]
5425pub struct UserRenderContext {
5426 #[prost(string, tag="1")]
5428 pub user_id: ::prost::alloc::string::String,
5429 #[prost(map="string, string", tag="2")]
5432 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5433}
5434#[derive(Clone, PartialEq, ::prost::Message)]
5436pub struct RenderBatchRequest {
5437 #[prost(string, tag="1")]
5439 pub template_id: ::prost::alloc::string::String,
5440 #[prost(int32, tag="2")]
5442 pub version: i32,
5443 #[prost(message, repeated, tag="3")]
5446 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
5447}
5448#[derive(Clone, PartialEq, ::prost::Message)]
5451pub struct RenderBatchResponse {
5452 #[prost(string, tag="1")]
5454 pub user_id: ::prost::alloc::string::String,
5455 #[prost(message, optional, tag="2")]
5457 pub message: ::core::option::Option<Message>,
5458 #[prost(string, tag="3")]
5460 pub error: ::prost::alloc::string::String,
5461}
5462#[derive(Clone, PartialEq, ::prost::Message)]
5467pub struct SessionRecording {
5468 #[prost(string, tag="1")]
5470 pub id: ::prost::alloc::string::String,
5471 #[prost(message, optional, tag="2")]
5473 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
5474 #[prost(message, optional, tag="3")]
5476 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
5477 #[prost(int32, tag="4")]
5479 pub duration_seconds: i32,
5480 #[prost(float, tag="5")]
5482 pub activity_score: f32,
5483}
5484#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5486pub struct ListSessionRecordingsRequest {
5487 #[prost(string, tag="1")]
5490 pub campaign_id: ::prost::alloc::string::String,
5491 #[prost(message, optional, tag="2")]
5493 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
5494 #[prost(message, optional, tag="3")]
5496 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
5497 #[prost(message, optional, tag="4")]
5499 pub pagination: ::core::option::Option<Pagination>,
5500}
5501#[derive(Clone, PartialEq, ::prost::Message)]
5503pub struct ListSessionRecordingsResponse {
5504 #[prost(message, repeated, tag="1")]
5506 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
5507 #[prost(message, optional, tag="2")]
5509 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5510}
5511#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5513pub struct GetSessionSnapshotsRequest {
5514 #[prost(string, tag="1")]
5517 pub recording_id: ::prost::alloc::string::String,
5518}
5519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5521pub struct GetSessionSnapshotsResponse {
5522 #[prost(string, tag="1")]
5525 pub snapshot_data: ::prost::alloc::string::String,
5526}
5527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5531pub struct ListRolesRequest {
5532}
5533#[derive(Clone, PartialEq, ::prost::Message)]
5535pub struct ListRolesResponse {
5536 #[prost(message, repeated, tag="1")]
5538 pub roles: ::prost::alloc::vec::Vec<Role>,
5539}
5540#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5542pub struct CreateRoleRequest {
5543 #[prost(string, tag="1")]
5546 pub name: ::prost::alloc::string::String,
5547 #[prost(enumeration="Permission", repeated, tag="2")]
5550 pub permissions: ::prost::alloc::vec::Vec<i32>,
5551}
5552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5554pub struct CreateRoleResponse {
5555 #[prost(message, optional, tag="1")]
5557 pub role: ::core::option::Option<Role>,
5558}
5559#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5561pub struct UpdateRoleRequest {
5562 #[prost(string, tag="1")]
5564 pub role_id: ::prost::alloc::string::String,
5565 #[prost(string, tag="2")]
5567 pub name: ::prost::alloc::string::String,
5568 #[prost(enumeration="Permission", repeated, tag="3")]
5572 pub permissions: ::prost::alloc::vec::Vec<i32>,
5573}
5574#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5576pub struct UpdateRoleResponse {
5577 #[prost(message, optional, tag="1")]
5579 pub role: ::core::option::Option<Role>,
5580}
5581#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5583pub struct DeleteRoleRequest {
5584 #[prost(string, tag="1")]
5586 pub role_id: ::prost::alloc::string::String,
5587}
5588#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5590pub struct DeleteRoleResponse {
5591}
5592#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5598pub struct SamlAttributeNames {
5599 #[prost(string, tag="1")]
5601 pub email: ::prost::alloc::string::String,
5602 #[prost(string, tag="2")]
5604 pub given_name: ::prost::alloc::string::String,
5605 #[prost(string, tag="3")]
5607 pub family_name: ::prost::alloc::string::String,
5608}
5609#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5611pub struct SsoProvider {
5612 #[prost(string, tag="1")]
5614 pub id: ::prost::alloc::string::String,
5615 #[prost(string, tag="2")]
5618 pub domain: ::prost::alloc::string::String,
5619 #[prost(enumeration="SsoProviderType", tag="3")]
5621 pub r#type: i32,
5622 #[prost(string, tag="4")]
5625 pub metadata_url: ::prost::alloc::string::String,
5626 #[prost(string, tag="5")]
5629 pub idp_provider_name: ::prost::alloc::string::String,
5630 #[prost(message, optional, tag="6")]
5632 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5633 #[prost(message, optional, tag="7")]
5635 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5636 #[prost(message, optional, tag="8")]
5638 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5639}
5640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5643pub struct CheckSsoByDomainRequest {
5644 #[prost(string, tag="1")]
5647 pub email: ::prost::alloc::string::String,
5648}
5649#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5651pub struct CheckSsoByDomainResponse {
5652 #[prost(bool, tag="1")]
5654 pub sso_enabled: bool,
5655 #[prost(string, tag="2")]
5658 pub provider_name: ::prost::alloc::string::String,
5659}
5660#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5662pub struct CreateSsoProviderRequest {
5663 #[prost(string, tag="1")]
5666 pub domain: ::prost::alloc::string::String,
5667 #[prost(enumeration="SsoProviderType", tag="2")]
5669 pub r#type: i32,
5670 #[prost(string, tag="3")]
5673 pub metadata_url: ::prost::alloc::string::String,
5674 #[prost(message, optional, tag="4")]
5677 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5678}
5679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5681pub struct CreateSsoProviderResponse {
5682 #[prost(message, optional, tag="1")]
5684 pub provider: ::core::option::Option<SsoProvider>,
5685}
5686#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5689pub struct GetSsoProviderRequest {
5690}
5691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5693pub struct GetSsoProviderResponse {
5694 #[prost(message, optional, tag="1")]
5696 pub provider: ::core::option::Option<SsoProvider>,
5697}
5698#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5700pub struct DeleteSsoProviderRequest {
5701 #[prost(string, tag="1")]
5703 pub provider_id: ::prost::alloc::string::String,
5704}
5705#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5707pub struct DeleteSsoProviderResponse {
5708}
5709#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5713#[repr(i32)]
5714pub enum SsoProviderType {
5715 Unspecified = 0,
5717 Saml = 1,
5719 Oidc = 2,
5721}
5722impl SsoProviderType {
5723 pub fn as_str_name(&self) -> &'static str {
5728 match self {
5729 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
5730 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
5731 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
5732 }
5733 }
5734 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5736 match value {
5737 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5738 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
5739 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
5740 _ => None,
5741 }
5742 }
5743}
5744#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5750pub struct Team {
5751 #[prost(string, tag="1")]
5753 pub id: ::prost::alloc::string::String,
5754 #[prost(string, tag="2")]
5757 pub name: ::prost::alloc::string::String,
5758 #[prost(string, tag="3")]
5761 pub description: ::prost::alloc::string::String,
5762 #[prost(int32, tag="4")]
5764 pub member_count: i32,
5765 #[prost(message, optional, tag="5")]
5767 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5768 #[prost(message, optional, tag="6")]
5770 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5771 #[prost(bool, tag="7")]
5773 pub is_default: bool,
5774 #[prost(string, tag="8")]
5776 pub created_by: ::prost::alloc::string::String,
5777}
5778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5780pub struct CreateTeamRequest {
5781 #[prost(string, tag="1")]
5784 pub name: ::prost::alloc::string::String,
5785 #[prost(string, tag="2")]
5788 pub description: ::prost::alloc::string::String,
5789}
5790#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5792pub struct CreateTeamResponse {
5793 #[prost(message, optional, tag="1")]
5795 pub team: ::core::option::Option<Team>,
5796}
5797#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5799pub struct GetTeamRequest {
5800 #[prost(string, tag="1")]
5802 pub team_id: ::prost::alloc::string::String,
5803}
5804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5806pub struct GetTeamResponse {
5807 #[prost(message, optional, tag="1")]
5809 pub team: ::core::option::Option<Team>,
5810}
5811#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5813pub struct ListTeamsRequest {
5814 #[prost(message, optional, tag="1")]
5816 pub pagination: ::core::option::Option<Pagination>,
5817}
5818#[derive(Clone, PartialEq, ::prost::Message)]
5820pub struct ListTeamsResponse {
5821 #[prost(message, repeated, tag="1")]
5823 pub teams: ::prost::alloc::vec::Vec<Team>,
5824 #[prost(message, optional, tag="2")]
5826 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5827}
5828#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5830pub struct UpdateTeamRequest {
5831 #[prost(string, tag="1")]
5833 pub team_id: ::prost::alloc::string::String,
5834 #[prost(string, tag="2")]
5838 pub name: ::prost::alloc::string::String,
5839 #[prost(string, tag="3")]
5842 pub description: ::prost::alloc::string::String,
5843}
5844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5846pub struct UpdateTeamResponse {
5847 #[prost(message, optional, tag="1")]
5849 pub team: ::core::option::Option<Team>,
5850}
5851#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5853pub struct DeleteTeamRequest {
5854 #[prost(string, tag="1")]
5857 pub team_id: ::prost::alloc::string::String,
5858}
5859#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5861pub struct DeleteTeamResponse {
5862}
5863#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5865pub struct AddTeamMembersRequest {
5866 #[prost(string, tag="1")]
5868 pub team_id: ::prost::alloc::string::String,
5869 #[prost(string, repeated, tag="2")]
5873 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5874}
5875#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5877pub struct AddTeamMembersResponse {
5878 #[prost(message, optional, tag="1")]
5880 pub team: ::core::option::Option<Team>,
5881}
5882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5884pub struct RemoveTeamMembersRequest {
5885 #[prost(string, tag="1")]
5887 pub team_id: ::prost::alloc::string::String,
5888 #[prost(string, repeated, tag="2")]
5891 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5892}
5893#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5895pub struct RemoveTeamMembersResponse {
5896 #[prost(message, optional, tag="1")]
5898 pub team: ::core::option::Option<Team>,
5899}
5900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5902pub struct ListTeamMembersRequest {
5903 #[prost(string, tag="1")]
5905 pub team_id: ::prost::alloc::string::String,
5906 #[prost(message, optional, tag="2")]
5908 pub pagination: ::core::option::Option<Pagination>,
5909}
5910#[derive(Clone, PartialEq, ::prost::Message)]
5912pub struct ListTeamMembersResponse {
5913 #[prost(message, repeated, tag="1")]
5915 pub users: ::prost::alloc::vec::Vec<User>,
5916 #[prost(message, optional, tag="2")]
5918 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5919}
5920#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5924pub struct TemplateVariable {
5925 #[prost(string, tag="1")]
5928 pub name: ::prost::alloc::string::String,
5929 #[prost(string, tag="2")]
5932 pub description: ::prost::alloc::string::String,
5933 #[prost(bool, tag="3")]
5935 pub required: bool,
5936 #[prost(enumeration="TemplateVariableSource", tag="4")]
5938 pub source: i32,
5939 #[prost(string, tag="5")]
5942 pub default_value: ::prost::alloc::string::String,
5943 #[prost(bool, tag="6")]
5946 pub pii: bool,
5947}
5948#[derive(Clone, PartialEq, ::prost::Message)]
5951pub struct Template {
5952 #[prost(string, tag="1")]
5954 pub id: ::prost::alloc::string::String,
5955 #[prost(string, tag="2")]
5958 pub name: ::prost::alloc::string::String,
5959 #[prost(string, tag="3")]
5962 pub body: ::prost::alloc::string::String,
5963 #[prost(message, repeated, tag="4")]
5965 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5966 #[prost(int32, tag="5")]
5968 pub version: i32,
5969 #[prost(message, optional, tag="6")]
5971 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5972 #[prost(message, optional, tag="7")]
5974 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5975 #[prost(string, tag="8")]
5979 pub title: ::prost::alloc::string::String,
5980 #[prost(enumeration="TemplateType", tag="9")]
5983 pub r#type: i32,
5984 #[prost(string, tag="10")]
5988 pub source_locale: ::prost::alloc::string::String,
5989}
5990#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5993pub struct TemplateTranslation {
5994 #[prost(string, tag="1")]
5996 pub id: ::prost::alloc::string::String,
5997 #[prost(string, tag="2")]
5999 pub template_id: ::prost::alloc::string::String,
6000 #[prost(int32, tag="3")]
6002 pub version: i32,
6003 #[prost(string, tag="4")]
6005 pub locale: ::prost::alloc::string::String,
6006 #[prost(string, tag="5")]
6009 pub title: ::prost::alloc::string::String,
6010 #[prost(string, tag="6")]
6013 pub body: ::prost::alloc::string::String,
6014 #[prost(enumeration="TranslationStatus", tag="7")]
6016 pub status: i32,
6017 #[prost(string, tag="8")]
6019 pub translated_by: ::prost::alloc::string::String,
6020 #[prost(string, tag="9")]
6022 pub reviewed_by: ::prost::alloc::string::String,
6023 #[prost(message, optional, tag="10")]
6025 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
6026 #[prost(message, optional, tag="11")]
6028 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
6029}
6030#[derive(Clone, PartialEq, ::prost::Message)]
6032pub struct CreateTemplateRequest {
6033 #[prost(string, tag="1")]
6036 pub name: ::prost::alloc::string::String,
6037 #[prost(string, tag="2")]
6040 pub body: ::prost::alloc::string::String,
6041 #[prost(message, repeated, tag="3")]
6043 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
6044 #[prost(string, tag="4")]
6047 pub title: ::prost::alloc::string::String,
6048 #[prost(enumeration="TemplateType", tag="5")]
6050 pub r#type: i32,
6051 #[prost(string, tag="6")]
6054 pub source_locale: ::prost::alloc::string::String,
6055}
6056#[derive(Clone, PartialEq, ::prost::Message)]
6058pub struct CreateTemplateResponse {
6059 #[prost(message, optional, tag="1")]
6061 pub template: ::core::option::Option<Template>,
6062}
6063#[derive(Clone, PartialEq, ::prost::Message)]
6065pub struct UpdateTemplateRequest {
6066 #[prost(string, tag="1")]
6068 pub template_id: ::prost::alloc::string::String,
6069 #[prost(string, tag="2")]
6072 pub body: ::prost::alloc::string::String,
6073 #[prost(message, repeated, tag="3")]
6075 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
6076}
6077#[derive(Clone, PartialEq, ::prost::Message)]
6079pub struct UpdateTemplateResponse {
6080 #[prost(message, optional, tag="1")]
6082 pub template: ::core::option::Option<Template>,
6083}
6084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6086pub struct GetTemplateRequest {
6087 #[prost(string, tag="1")]
6089 pub template_id: ::prost::alloc::string::String,
6090 #[prost(int32, tag="2")]
6092 pub version: i32,
6093}
6094#[derive(Clone, PartialEq, ::prost::Message)]
6096pub struct GetTemplateResponse {
6097 #[prost(message, optional, tag="1")]
6099 pub template: ::core::option::Option<Template>,
6100}
6101#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6103pub struct ListTemplatesRequest {
6104 #[prost(message, optional, tag="1")]
6106 pub pagination: ::core::option::Option<Pagination>,
6107 #[prost(enumeration="TemplateType", tag="2")]
6109 pub r#type: i32,
6110}
6111#[derive(Clone, PartialEq, ::prost::Message)]
6113pub struct ListTemplatesResponse {
6114 #[prost(message, repeated, tag="1")]
6116 pub templates: ::prost::alloc::vec::Vec<Template>,
6117 #[prost(message, optional, tag="2")]
6119 pub pagination_meta: ::core::option::Option<PaginationMeta>,
6120}
6121#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6123pub struct CreateTemplateTranslationRequest {
6124 #[prost(string, tag="1")]
6126 pub template_id: ::prost::alloc::string::String,
6127 #[prost(int32, tag="2")]
6129 pub version: i32,
6130 #[prost(string, tag="3")]
6132 pub locale: ::prost::alloc::string::String,
6133 #[prost(string, tag="4")]
6135 pub title: ::prost::alloc::string::String,
6136 #[prost(string, tag="5")]
6138 pub body: ::prost::alloc::string::String,
6139 #[prost(string, tag="6")]
6141 pub translated_by: ::prost::alloc::string::String,
6142 #[prost(enumeration="TranslationStatus", tag="7")]
6144 pub status: i32,
6145}
6146#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6148pub struct CreateTemplateTranslationResponse {
6149 #[prost(message, optional, tag="1")]
6151 pub translation: ::core::option::Option<TemplateTranslation>,
6152}
6153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6155pub struct UpdateTemplateTranslationRequest {
6156 #[prost(string, tag="1")]
6158 pub translation_id: ::prost::alloc::string::String,
6159 #[prost(string, tag="2")]
6161 pub title: ::prost::alloc::string::String,
6162 #[prost(string, tag="3")]
6164 pub body: ::prost::alloc::string::String,
6165 #[prost(enumeration="TranslationStatus", tag="4")]
6167 pub status: i32,
6168}
6169#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6171pub struct UpdateTemplateTranslationResponse {
6172 #[prost(message, optional, tag="1")]
6174 pub translation: ::core::option::Option<TemplateTranslation>,
6175}
6176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6178pub struct ListTemplateTranslationsRequest {
6179 #[prost(string, tag="1")]
6181 pub template_id: ::prost::alloc::string::String,
6182 #[prost(int32, tag="2")]
6184 pub version: i32,
6185}
6186#[derive(Clone, PartialEq, ::prost::Message)]
6188pub struct ListTemplateTranslationsResponse {
6189 #[prost(message, repeated, tag="1")]
6191 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
6192}
6193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6195pub struct ApproveTemplateTranslationRequest {
6196 #[prost(string, tag="1")]
6198 pub translation_id: ::prost::alloc::string::String,
6199}
6200#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6202pub struct ApproveTemplateTranslationResponse {
6203 #[prost(message, optional, tag="1")]
6205 pub translation: ::core::option::Option<TemplateTranslation>,
6206}
6207#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6211#[repr(i32)]
6212pub enum TemplateType {
6213 Unspecified = 0,
6215 Markdown = 1,
6217 Rich = 2,
6219 Html = 3,
6221}
6222impl TemplateType {
6223 pub fn as_str_name(&self) -> &'static str {
6228 match self {
6229 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
6230 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
6231 Self::Rich => "TEMPLATE_TYPE_RICH",
6232 Self::Html => "TEMPLATE_TYPE_HTML",
6233 }
6234 }
6235 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6237 match value {
6238 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6239 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
6240 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
6241 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
6242 _ => None,
6243 }
6244 }
6245}
6246#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6248#[repr(i32)]
6249pub enum TemplateVariableSource {
6250 Unspecified = 0,
6252 Profile = 1,
6254 Custom = 2,
6256}
6257impl TemplateVariableSource {
6258 pub fn as_str_name(&self) -> &'static str {
6263 match self {
6264 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
6265 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
6266 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
6267 }
6268 }
6269 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6271 match value {
6272 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
6273 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
6274 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
6275 _ => None,
6276 }
6277 }
6278}
6279#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6281#[repr(i32)]
6282pub enum TranslationStatus {
6283 Unspecified = 0,
6284 Draft = 1,
6286 AiTranslated = 2,
6288 InReview = 3,
6290 Approved = 4,
6292}
6293impl TranslationStatus {
6294 pub fn as_str_name(&self) -> &'static str {
6299 match self {
6300 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
6301 Self::Draft => "TRANSLATION_STATUS_DRAFT",
6302 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
6303 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
6304 Self::Approved => "TRANSLATION_STATUS_APPROVED",
6305 }
6306 }
6307 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6309 match value {
6310 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
6311 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
6312 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
6313 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
6314 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
6315 _ => None,
6316 }
6317 }
6318}
6319#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6324pub struct DeeplinkTokenPayload {
6325 #[prost(string, tag="1")]
6328 pub campaign_id: ::prost::alloc::string::String,
6329 #[prost(string, tag="2")]
6335 pub recipient_user_id: ::prost::alloc::string::String,
6336 #[prost(enumeration="ChannelStepKind", tag="3")]
6340 pub step_kind: i32,
6341 #[prost(message, optional, tag="4")]
6344 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
6345}
6346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6347pub struct SignDeeplinkTokenRequest {
6348 #[prost(string, tag="1")]
6351 pub campaign_id: ::prost::alloc::string::String,
6352 #[prost(string, tag="2")]
6355 pub recipient_user_id: ::prost::alloc::string::String,
6356 #[prost(enumeration="ChannelStepKind", tag="3")]
6358 pub step_kind: i32,
6359 #[prost(int64, tag="4")]
6364 pub ttl_seconds: i64,
6365}
6366#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6367pub struct SignDeeplinkTokenResponse {
6368 #[prost(string, tag="1")]
6374 pub token: ::prost::alloc::string::String,
6375 #[prost(message, optional, tag="2")]
6378 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
6379 #[prost(int32, tag="3")]
6383 pub key_version: i32,
6384}
6385#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6386pub struct ValidateDeeplinkTokenRequest {
6387 #[prost(string, tag="1")]
6390 pub token: ::prost::alloc::string::String,
6391 #[prost(string, tag="2")]
6398 pub campaign_id: ::prost::alloc::string::String,
6399}
6400#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6401pub struct ValidateDeeplinkTokenResponse {
6402 #[prost(bool, tag="1")]
6405 pub valid: bool,
6406 #[prost(enumeration="ValidationFailureReason", tag="2")]
6410 pub failure_reason: i32,
6411 #[prost(message, optional, tag="3")]
6415 pub payload: ::core::option::Option<DeeplinkTokenPayload>,
6416}
6417#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6421#[repr(i32)]
6422pub enum ValidationFailureReason {
6423 Unspecified = 0,
6424 InvalidSignature = 1,
6427 Expired = 2,
6429 KeyRetired = 3,
6435 Malformed = 4,
6439}
6440impl ValidationFailureReason {
6441 pub fn as_str_name(&self) -> &'static str {
6446 match self {
6447 Self::Unspecified => "VALIDATION_FAILURE_REASON_UNSPECIFIED",
6448 Self::InvalidSignature => "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE",
6449 Self::Expired => "VALIDATION_FAILURE_REASON_EXPIRED",
6450 Self::KeyRetired => "VALIDATION_FAILURE_REASON_KEY_RETIRED",
6451 Self::Malformed => "VALIDATION_FAILURE_REASON_MALFORMED",
6452 }
6453 }
6454 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6456 match value {
6457 "VALIDATION_FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
6458 "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE" => Some(Self::InvalidSignature),
6459 "VALIDATION_FAILURE_REASON_EXPIRED" => Some(Self::Expired),
6460 "VALIDATION_FAILURE_REASON_KEY_RETIRED" => Some(Self::KeyRetired),
6461 "VALIDATION_FAILURE_REASON_MALFORMED" => Some(Self::Malformed),
6462 _ => None,
6463 }
6464 }
6465}
6466include!("pidgr.v1.tonic.rs");
6467