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}
754impl Permission {
755 pub fn as_str_name(&self) -> &'static str {
760 match self {
761 Self::Unspecified => "PERMISSION_UNSPECIFIED",
762 Self::OrgRead => "PERMISSION_ORG_READ",
763 Self::OrgWrite => "PERMISSION_ORG_WRITE",
764 Self::MembersRead => "PERMISSION_MEMBERS_READ",
765 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
766 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
767 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
768 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
769 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
770 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
771 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
772 Self::InboxRead => "PERMISSION_INBOX_READ",
773 Self::InboxAct => "PERMISSION_INBOX_ACT",
774 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
775 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
776 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
777 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
778 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
779 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
780 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
781 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
782 Self::AuditRead => "PERMISSION_AUDIT_READ",
783 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
784 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
785 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
786 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
787 Self::PlatformAbuseResponse => "PERMISSION_PLATFORM_ABUSE_RESPONSE",
788 Self::PlatformComplianceWrite => "PERMISSION_PLATFORM_COMPLIANCE_WRITE",
789 Self::PlatformSynthetic => "PERMISSION_PLATFORM_SYNTHETIC",
790 }
791 }
792 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
794 match value {
795 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
796 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
797 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
798 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
799 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
800 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
801 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
802 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
803 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
804 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
805 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
806 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
807 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
808 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
809 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
810 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
811 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
812 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
813 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
814 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
815 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
816 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
817 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
818 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
819 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
820 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
821 "PERMISSION_PLATFORM_ABUSE_RESPONSE" => Some(Self::PlatformAbuseResponse),
822 "PERMISSION_PLATFORM_COMPLIANCE_WRITE" => Some(Self::PlatformComplianceWrite),
823 "PERMISSION_PLATFORM_SYNTHETIC" => Some(Self::PlatformSynthetic),
824 _ => None,
825 }
826 }
827}
828#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
830#[repr(i32)]
831pub enum ActionType {
832 Unspecified = 0,
834 Ack = 1,
836}
837impl ActionType {
838 pub fn as_str_name(&self) -> &'static str {
843 match self {
844 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
845 Self::Ack => "ACTION_TYPE_ACK",
846 }
847 }
848 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
850 match value {
851 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
852 "ACTION_TYPE_ACK" => Some(Self::Ack),
853 _ => None,
854 }
855 }
856}
857#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
859#[repr(i32)]
860pub enum StepType {
861 Unspecified = 0,
863 SendNotification = 1,
865 DeadlineCheck = 2,
867 SendReminder = 3,
869 CallWebhook = 4,
871 MarkMissed = 5,
873 Escalate = 6,
875}
876impl StepType {
877 pub fn as_str_name(&self) -> &'static str {
882 match self {
883 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
884 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
885 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
886 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
887 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
888 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
889 Self::Escalate => "STEP_TYPE_ESCALATE",
890 }
891 }
892 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
894 match value {
895 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
896 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
897 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
898 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
899 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
900 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
901 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
902 _ => None,
903 }
904 }
905}
906#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
908#[repr(i32)]
909pub enum EscalationCondition {
910 Unspecified = 0,
911 IfNotAcked = 1,
913 IfNotClosed = 2,
915}
916impl EscalationCondition {
917 pub fn as_str_name(&self) -> &'static str {
922 match self {
923 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
924 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
925 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
926 }
927 }
928 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
930 match value {
931 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
932 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
933 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
934 _ => None,
935 }
936 }
937}
938#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
940#[repr(i32)]
941pub enum EscalationTargetType {
942 Unspecified = 0,
943 User = 1,
945 Group = 2,
947 Manager = 3,
949 Role = 4,
951}
952impl EscalationTargetType {
953 pub fn as_str_name(&self) -> &'static str {
958 match self {
959 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
960 Self::User => "ESCALATION_TARGET_TYPE_USER",
961 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
962 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
963 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
964 }
965 }
966 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
968 match value {
969 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
970 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
971 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
972 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
973 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
974 _ => None,
975 }
976 }
977}
978#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
980#[repr(i32)]
981pub enum EscalateMode {
982 Unspecified = 0,
984 Deliver = 1,
986 AlertOnly = 2,
988}
989impl EscalateMode {
990 pub fn as_str_name(&self) -> &'static str {
995 match self {
996 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
997 Self::Deliver => "ESCALATE_MODE_DELIVER",
998 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
999 }
1000 }
1001 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1003 match value {
1004 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1005 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
1006 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
1007 _ => None,
1008 }
1009 }
1010}
1011#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1015pub struct ApiKey {
1016 #[prost(string, tag="1")]
1018 pub id: ::prost::alloc::string::String,
1019 #[prost(string, tag="2")]
1021 pub name: ::prost::alloc::string::String,
1022 #[prost(string, tag="3")]
1025 pub key_prefix: ::prost::alloc::string::String,
1026 #[prost(enumeration="Permission", repeated, tag="4")]
1028 pub permissions: ::prost::alloc::vec::Vec<i32>,
1029 #[prost(message, optional, tag="5")]
1031 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1032 #[prost(message, optional, tag="6")]
1034 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
1035 #[prost(message, optional, tag="7")]
1037 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1038 #[prost(enumeration="KeyType", tag="8")]
1041 pub key_type: i32,
1042}
1043#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1045pub struct CreateApiKeyRequest {
1046 #[prost(string, tag="1")]
1048 pub name: ::prost::alloc::string::String,
1049 #[prost(enumeration="Permission", repeated, tag="2")]
1052 pub permissions: ::prost::alloc::vec::Vec<i32>,
1053 #[prost(message, optional, tag="3")]
1055 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1056 #[prost(enumeration="KeyType", tag="4")]
1059 pub key_type: i32,
1060}
1061#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1064pub struct CreateApiKeyResponse {
1065 #[prost(message, optional, tag="1")]
1067 pub api_key: ::core::option::Option<ApiKey>,
1068 #[prost(string, tag="2")]
1071 pub key: ::prost::alloc::string::String,
1072}
1073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1075pub struct ListApiKeysRequest {
1076 #[prost(enumeration="KeyType", tag="1")]
1078 pub key_type: i32,
1079}
1080#[derive(Clone, PartialEq, ::prost::Message)]
1082pub struct ListApiKeysResponse {
1083 #[prost(message, repeated, tag="1")]
1085 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
1086}
1087#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1089pub struct RevokeApiKeyRequest {
1090 #[prost(string, tag="1")]
1092 pub api_key_id: ::prost::alloc::string::String,
1093}
1094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1096pub struct RevokeApiKeyResponse {
1097}
1098#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1102#[repr(i32)]
1103pub enum KeyType {
1104 Unspecified = 0,
1105 ApiKey = 1,
1106 ScimToken = 2,
1107}
1108impl KeyType {
1109 pub fn as_str_name(&self) -> &'static str {
1114 match self {
1115 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
1116 Self::ApiKey => "KEY_TYPE_API_KEY",
1117 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
1118 }
1119 }
1120 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1122 match value {
1123 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1124 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
1125 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
1126 _ => None,
1127 }
1128 }
1129}
1130#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1135pub struct ExportUserDataRequest {
1136 #[prost(string, tag="1")]
1139 pub user_id: ::prost::alloc::string::String,
1140}
1141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1143pub struct ExportUserDataResponse {
1144 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1146 pub status: i32,
1147 #[prost(string, tag="2")]
1150 pub result_url: ::prost::alloc::string::String,
1151 #[prost(string, tag="3")]
1154 pub export_id: ::prost::alloc::string::String,
1155}
1156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1161pub struct ExportOrgDataRequest {
1162}
1163#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1168pub struct ExportOrgDataResponse {
1169 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1171 pub status: i32,
1172 #[prost(string, tag="2")]
1175 pub result_url: ::prost::alloc::string::String,
1176 #[prost(string, tag="3")]
1179 pub export_id: ::prost::alloc::string::String,
1180}
1181#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1184pub struct DeleteUserDataRequest {
1185 #[prost(string, tag="1")]
1188 pub user_id: ::prost::alloc::string::String,
1189 #[prost(bool, tag="2")]
1192 pub anonymize: bool,
1193}
1194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1196pub struct DeleteUserDataResponse {
1197 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1199 pub status: i32,
1200 #[prost(message, optional, tag="2")]
1203 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
1204 #[prost(string, tag="3")]
1206 pub request_id: ::prost::alloc::string::String,
1207}
1208#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1211pub struct ListPrivacyRequestsRequest {
1212 #[prost(int32, tag="1")]
1215 pub page_size: i32,
1216 #[prost(string, tag="2")]
1218 pub page_token: ::prost::alloc::string::String,
1219 #[prost(string, tag="3")]
1221 pub request_type: ::prost::alloc::string::String,
1222 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1224 pub status: i32,
1225}
1226#[derive(Clone, PartialEq, ::prost::Message)]
1228pub struct ListPrivacyRequestsResponse {
1229 #[prost(message, repeated, tag="1")]
1231 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1232 #[prost(string, tag="2")]
1234 pub next_page_token: ::prost::alloc::string::String,
1235}
1236#[derive(Clone, PartialEq, ::prost::Message)]
1238pub struct PrivacyRequest {
1239 #[prost(string, tag="1")]
1241 pub id: ::prost::alloc::string::String,
1242 #[prost(string, tag="2")]
1244 pub user_id: ::prost::alloc::string::String,
1245 #[prost(string, tag="3")]
1247 pub user_email: ::prost::alloc::string::String,
1248 #[prost(string, tag="4")]
1250 pub request_type: ::prost::alloc::string::String,
1251 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1253 pub status: i32,
1254 #[prost(bool, tag="6")]
1256 pub anonymize: bool,
1257 #[prost(string, tag="7")]
1259 pub requested_by_email: ::prost::alloc::string::String,
1260 #[prost(message, optional, tag="8")]
1262 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1263 #[prost(message, optional, tag="9")]
1265 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1266 #[prost(map="string, string", tag="10")]
1268 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1269}
1270#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1273pub struct CancelDeletionRequest {
1274 #[prost(string, tag="1")]
1276 pub request_id: ::prost::alloc::string::String,
1277 #[prost(string, tag="2")]
1279 pub confirmation_email: ::prost::alloc::string::String,
1280}
1281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1283pub struct CancelDeletionResponse {
1284 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1286 pub status: i32,
1287}
1288#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1291pub struct ImmediateDeleteRequest {
1292 #[prost(string, tag="1")]
1294 pub request_id: ::prost::alloc::string::String,
1295 #[prost(string, tag="2")]
1297 pub confirmation_email: ::prost::alloc::string::String,
1298}
1299#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1301pub struct ImmediateDeleteResponse {
1302 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1304 pub status: i32,
1305}
1306#[derive(Clone, PartialEq, ::prost::Message)]
1309pub struct RectifyUserDataRequest {
1310 #[prost(string, tag="1")]
1313 pub user_id: ::prost::alloc::string::String,
1314 #[prost(map="string, string", tag="2")]
1318 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1319}
1320#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1322pub struct RectifyUserDataResponse {
1323 #[prost(string, repeated, tag="1")]
1325 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1326}
1327#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1330pub struct RestrictProcessingRequest {
1331 #[prost(string, tag="1")]
1334 pub user_id: ::prost::alloc::string::String,
1335 #[prost(bool, tag="2")]
1337 pub restricted: bool,
1338}
1339#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1341pub struct RestrictProcessingResponse {
1342 #[prost(bool, tag="1")]
1344 pub restricted: bool,
1345 #[prost(message, optional, tag="2")]
1347 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1348}
1349#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1353pub struct GetDataExistenceConfirmationRequest {
1354 #[prost(string, tag="1")]
1357 pub user_id: ::prost::alloc::string::String,
1358}
1359#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1361pub struct GetDataExistenceConfirmationResponse {
1362 #[prost(bool, tag="1")]
1364 pub exists: bool,
1365 #[prost(string, repeated, tag="2")]
1367 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1368}
1369#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1372pub struct ListMyPrivacyRequestsRequest {
1373 #[prost(int32, tag="1")]
1376 pub page_size: i32,
1377 #[prost(string, tag="2")]
1379 pub page_token: ::prost::alloc::string::String,
1380 #[prost(string, tag="3")]
1382 pub request_type: ::prost::alloc::string::String,
1383 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1385 pub status: i32,
1386}
1387#[derive(Clone, PartialEq, ::prost::Message)]
1389pub struct ListMyPrivacyRequestsResponse {
1390 #[prost(message, repeated, tag="1")]
1392 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1393 #[prost(string, tag="2")]
1395 pub next_page_token: ::prost::alloc::string::String,
1396}
1397#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1402pub struct OrgSecurityIncident {
1403 #[prost(string, tag="1")]
1406 pub id: ::prost::alloc::string::String,
1407 #[prost(message, optional, tag="2")]
1410 pub detected_at: ::core::option::Option<::prost_types::Timestamp>,
1411 #[prost(enumeration="SecurityIncidentSeverity", tag="3")]
1413 pub severity: i32,
1414 #[prost(enumeration="SecurityIncidentClassification", tag="4")]
1416 pub classification: i32,
1417 #[prost(message, optional, tag="5")]
1420 pub notified_at: ::core::option::Option<::prost_types::Timestamp>,
1421 #[prost(message, optional, tag="6")]
1423 pub resolved_at: ::core::option::Option<::prost_types::Timestamp>,
1424}
1425#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1429pub struct ListOrgSecurityIncidentsRequest {
1430 #[prost(int32, tag="1")]
1433 pub page_size: i32,
1434 #[prost(string, tag="2")]
1436 pub page_token: ::prost::alloc::string::String,
1437}
1438#[derive(Clone, PartialEq, ::prost::Message)]
1440pub struct ListOrgSecurityIncidentsResponse {
1441 #[prost(message, repeated, tag="1")]
1444 pub incidents: ::prost::alloc::vec::Vec<OrgSecurityIncident>,
1445 #[prost(string, tag="2")]
1447 pub next_page_token: ::prost::alloc::string::String,
1448}
1449#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1453#[repr(i32)]
1454pub enum PrivacyRequestStatus {
1455 Unspecified = 0,
1457 Pending = 1,
1459 Processing = 2,
1461 Completed = 3,
1463 Failed = 4,
1465}
1466impl PrivacyRequestStatus {
1467 pub fn as_str_name(&self) -> &'static str {
1472 match self {
1473 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1474 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1475 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1476 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1477 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1478 }
1479 }
1480 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1482 match value {
1483 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1484 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1485 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1486 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1487 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1488 _ => None,
1489 }
1490 }
1491}
1492#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1495#[repr(i32)]
1496pub enum SecurityIncidentSeverity {
1497 Unspecified = 0,
1499 Info = 1,
1501 Warn = 2,
1503 Breach = 3,
1505}
1506impl SecurityIncidentSeverity {
1507 pub fn as_str_name(&self) -> &'static str {
1512 match self {
1513 Self::Unspecified => "SECURITY_INCIDENT_SEVERITY_UNSPECIFIED",
1514 Self::Info => "SECURITY_INCIDENT_SEVERITY_INFO",
1515 Self::Warn => "SECURITY_INCIDENT_SEVERITY_WARN",
1516 Self::Breach => "SECURITY_INCIDENT_SEVERITY_BREACH",
1517 }
1518 }
1519 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1521 match value {
1522 "SECURITY_INCIDENT_SEVERITY_UNSPECIFIED" => Some(Self::Unspecified),
1523 "SECURITY_INCIDENT_SEVERITY_INFO" => Some(Self::Info),
1524 "SECURITY_INCIDENT_SEVERITY_WARN" => Some(Self::Warn),
1525 "SECURITY_INCIDENT_SEVERITY_BREACH" => Some(Self::Breach),
1526 _ => None,
1527 }
1528 }
1529}
1530#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1533#[repr(i32)]
1534pub enum SecurityIncidentClassification {
1535 Unspecified = 0,
1537 Pending = 1,
1539 NotBreach = 2,
1541 OperationalOnly = 10,
1543 PersonalDataBreach = 11,
1545 PersonalDataBreachHighRisk = 12,
1547}
1548impl SecurityIncidentClassification {
1549 pub fn as_str_name(&self) -> &'static str {
1554 match self {
1555 Self::Unspecified => "SECURITY_INCIDENT_CLASSIFICATION_UNSPECIFIED",
1556 Self::Pending => "SECURITY_INCIDENT_CLASSIFICATION_PENDING",
1557 Self::NotBreach => "SECURITY_INCIDENT_CLASSIFICATION_NOT_BREACH",
1558 Self::OperationalOnly => "SECURITY_INCIDENT_CLASSIFICATION_OPERATIONAL_ONLY",
1559 Self::PersonalDataBreach => "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH",
1560 Self::PersonalDataBreachHighRisk => "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH_HIGH_RISK",
1561 }
1562 }
1563 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1565 match value {
1566 "SECURITY_INCIDENT_CLASSIFICATION_UNSPECIFIED" => Some(Self::Unspecified),
1567 "SECURITY_INCIDENT_CLASSIFICATION_PENDING" => Some(Self::Pending),
1568 "SECURITY_INCIDENT_CLASSIFICATION_NOT_BREACH" => Some(Self::NotBreach),
1569 "SECURITY_INCIDENT_CLASSIFICATION_OPERATIONAL_ONLY" => Some(Self::OperationalOnly),
1570 "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH" => Some(Self::PersonalDataBreach),
1571 "SECURITY_INCIDENT_CLASSIFICATION_PERSONAL_DATA_BREACH_HIGH_RISK" => Some(Self::PersonalDataBreachHighRisk),
1572 _ => None,
1573 }
1574 }
1575}
1576#[derive(Clone, PartialEq, ::prost::Message)]
1581pub struct AuditEvent {
1582 #[prost(string, tag="1")]
1585 pub id: ::prost::alloc::string::String,
1586 #[prost(string, tag="2")]
1589 pub org_id: ::prost::alloc::string::String,
1590 #[prost(string, tag="3")]
1593 pub actor_id: ::prost::alloc::string::String,
1594 #[prost(enumeration="AuditEventType", tag="4")]
1596 pub event_type: i32,
1597 #[prost(string, tag="5")]
1600 pub entity_type: ::prost::alloc::string::String,
1601 #[prost(string, tag="6")]
1604 pub entity_id: ::prost::alloc::string::String,
1605 #[prost(map="string, string", tag="7")]
1608 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1609 #[prost(bool, tag="8")]
1613 pub synthetic: bool,
1614 #[prost(message, optional, tag="10")]
1616 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1617}
1618#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1621pub struct ListAuditEventsRequest {
1622 #[prost(string, tag="1")]
1624 pub page_token: ::prost::alloc::string::String,
1625 #[prost(int32, tag="2")]
1628 pub page_size: i32,
1629 #[prost(enumeration="AuditEventType", tag="3")]
1631 pub event_type: i32,
1632 #[prost(string, tag="4")]
1635 pub actor_id: ::prost::alloc::string::String,
1636 #[prost(message, optional, tag="5")]
1638 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1639 #[prost(message, optional, tag="6")]
1641 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1642}
1643#[derive(Clone, PartialEq, ::prost::Message)]
1645pub struct ListAuditEventsResponse {
1646 #[prost(message, repeated, tag="1")]
1648 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1649 #[prost(string, tag="2")]
1651 pub next_page_token: ::prost::alloc::string::String,
1652}
1653#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1656pub struct ExportAuditTrailRequest {
1657 #[prost(enumeration="AuditExportFormat", tag="1")]
1659 pub format: i32,
1660 #[prost(message, optional, tag="2")]
1662 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1663 #[prost(message, optional, tag="3")]
1665 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1666}
1667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1669pub struct ExportAuditTrailResponse {
1670 #[prost(string, tag="1")]
1673 pub export_url: ::prost::alloc::string::String,
1674 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1676 pub status: i32,
1677}
1678#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1680pub struct AuditExport {
1681 #[prost(string, tag="1")]
1683 pub id: ::prost::alloc::string::String,
1684 #[prost(string, tag="2")]
1686 pub format: ::prost::alloc::string::String,
1687 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1689 pub status: i32,
1690 #[prost(string, tag="4")]
1692 pub result_url: ::prost::alloc::string::String,
1693 #[prost(string, tag="5")]
1695 pub error_message: ::prost::alloc::string::String,
1696 #[prost(string, tag="6")]
1698 pub requested_by_email: ::prost::alloc::string::String,
1699 #[prost(message, optional, tag="7")]
1701 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1702 #[prost(message, optional, tag="8")]
1704 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1705}
1706#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1709pub struct ListAuditExportsRequest {
1710}
1711#[derive(Clone, PartialEq, ::prost::Message)]
1713pub struct ListAuditExportsResponse {
1714 #[prost(message, repeated, tag="1")]
1716 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1717}
1718#[derive(Clone, PartialEq, ::prost::Message)]
1726pub struct AppendRequest {
1727 #[prost(string, tag="1")]
1733 pub event_type: ::prost::alloc::string::String,
1734 #[prost(string, tag="2")]
1736 pub org_id: ::prost::alloc::string::String,
1737 #[prost(string, optional, tag="3")]
1740 pub subject_user_id: ::core::option::Option<::prost::alloc::string::String>,
1741 #[prost(string, optional, tag="4")]
1744 pub actor_id: ::core::option::Option<::prost::alloc::string::String>,
1745 #[prost(message, optional, tag="5")]
1753 pub details: ::core::option::Option<::prost_types::Struct>,
1754}
1755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1756pub struct AppendResponse {
1757 #[prost(string, tag="1")]
1759 pub event_id: ::prost::alloc::string::String,
1760}
1761#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1765#[repr(i32)]
1766pub enum AuditEventType {
1767 Unspecified = 0,
1769 CampaignCreated = 1,
1772 MessageSent = 2,
1774 MessageOpened = 3,
1776 AckRegistered = 4,
1778 EscalationExecuted = 5,
1780 CampaignStarted = 12,
1782 CampaignCancelled = 13,
1784 CampaignUpdated = 14,
1786 UserInvited = 6,
1789 UserDeactivated = 7,
1791 UserReactivated = 15,
1793 RoleChanged = 10,
1795 InviteRevoked = 16,
1797 ProfileUpdated = 17,
1799 SettingsUpdated = 18,
1801 PasskeyEnrolled = 19,
1803 DataExportRequested = 8,
1806 DataDeletionRequested = 9,
1808 DataRectified = 20,
1810 ProcessingRestricted = 21,
1812 DeletionCancelled = 22,
1814 DeletionImmediate = 23,
1816 SsoConfigured = 11,
1819 SsoProviderCreated = 24,
1821 SsoProviderDeleted = 25,
1823 OrgUpdated = 26,
1825 RoleCreated = 27,
1828 RoleUpdated = 28,
1830 RoleDeleted = 29,
1832 TemplateCreated = 30,
1835 TemplateUpdated = 31,
1837 ApiKeyCreated = 32,
1840 ApiKeyRevoked = 33,
1842 InviteLinkCreated = 34,
1845 InviteLinkRevoked = 35,
1847 GroupCreated = 36,
1850 GroupUpdated = 37,
1852 GroupDeleted = 38,
1854 GroupMembersAdded = 39,
1856 GroupMembersRemoved = 40,
1858 TeamCreated = 41,
1861 TeamUpdated = 42,
1863 TeamDeleted = 43,
1865 TeamMembersAdded = 44,
1867 TeamMembersRemoved = 45,
1869 ScimUserProvisioned = 46,
1872 ScimUserDeprovisioned = 47,
1874 ScimUserUpdated = 48,
1876 TranslationCreated = 49,
1879 TranslationApproved = 50,
1881 SandboxCreated = 51,
1884 SandboxExpired = 52,
1886 AiPredictionLogged = 53,
1889 MlPipelineTriggered = 54,
1891 ArchetypeClusteringTriggered = 55,
1893 OrgCreated = 56,
1896 OrgDeleted = 57,
1898 ReachabilityUpsert = 58,
1902 ReachabilityRemove = 59,
1905}
1906impl AuditEventType {
1907 pub fn as_str_name(&self) -> &'static str {
1912 match self {
1913 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1914 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1915 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1916 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1917 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1918 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1919 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1920 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1921 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1922 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1923 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1924 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1925 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1926 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1927 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1928 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1929 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1930 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1931 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1932 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1933 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1934 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1935 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1936 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1937 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1938 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1939 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1940 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1941 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1942 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1943 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1944 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1945 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1946 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1947 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1948 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1949 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1950 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1951 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1952 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1953 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1954 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1955 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1956 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1957 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1958 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1959 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1960 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1961 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1962 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1963 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1964 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1965 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1966 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1967 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1968 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1969 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1970 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1971 Self::ReachabilityUpsert => "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT",
1972 Self::ReachabilityRemove => "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE",
1973 }
1974 }
1975 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1977 match value {
1978 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1979 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1980 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1981 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1982 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1983 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1984 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1985 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1986 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
1987 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
1988 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
1989 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
1990 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
1991 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
1992 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
1993 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
1994 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
1995 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
1996 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
1997 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
1998 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
1999 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
2000 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
2001 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
2002 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
2003 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
2004 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
2005 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
2006 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
2007 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
2008 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
2009 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
2010 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
2011 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
2012 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
2013 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
2014 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
2015 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
2016 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
2017 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
2018 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
2019 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
2020 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
2021 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
2022 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
2023 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
2024 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
2025 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
2026 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
2027 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
2028 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
2029 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
2030 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
2031 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
2032 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
2033 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
2034 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
2035 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
2036 "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT" => Some(Self::ReachabilityUpsert),
2037 "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE" => Some(Self::ReachabilityRemove),
2038 _ => None,
2039 }
2040 }
2041}
2042#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2044#[repr(i32)]
2045pub enum AuditExportFormat {
2046 Unspecified = 0,
2048 Csv = 1,
2050 Json = 2,
2052 Parquet = 3,
2054}
2055impl AuditExportFormat {
2056 pub fn as_str_name(&self) -> &'static str {
2061 match self {
2062 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
2063 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
2064 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
2065 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
2066 }
2067 }
2068 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2070 match value {
2071 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
2072 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
2073 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
2074 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
2075 _ => None,
2076 }
2077 }
2078}
2079#[derive(Clone, PartialEq, ::prost::Message)]
2084pub struct Campaign {
2085 #[prost(string, tag="1")]
2088 pub id: ::prost::alloc::string::String,
2089 #[prost(string, tag="2")]
2092 pub name: ::prost::alloc::string::String,
2093 #[prost(string, tag="3")]
2096 pub template_id: ::prost::alloc::string::String,
2097 #[prost(int32, tag="4")]
2099 pub template_version: i32,
2100 #[prost(string, tag="5")]
2102 pub audience_snapshot_ref: ::prost::alloc::string::String,
2103 #[prost(enumeration="CampaignStatus", tag="6")]
2105 pub status: i32,
2106 #[prost(message, optional, tag="7")]
2108 pub workflow: ::core::option::Option<WorkflowDefinition>,
2109 #[prost(int32, tag="8")]
2111 pub total_recipients: i32,
2112 #[prost(int32, tag="9")]
2114 pub action_completed_count: i32,
2115 #[prost(int32, tag="10")]
2117 pub missed_count: i32,
2118 #[prost(message, optional, tag="11")]
2120 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2121 #[prost(message, optional, tag="12")]
2123 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
2124 #[prost(message, optional, tag="13")]
2126 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
2127 #[prost(string, tag="14")]
2130 pub sender_name: ::prost::alloc::string::String,
2131 #[prost(string, tag="15")]
2134 pub title: ::prost::alloc::string::String,
2135 #[prost(bool, tag="16")]
2137 pub critical: bool,
2138 #[prost(string, tag="17")]
2143 pub default_locale: ::prost::alloc::string::String,
2144 #[prost(bool, tag="18")]
2148 pub wait_for_enrollment: bool,
2149 #[prost(message, optional, tag="19")]
2152 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2153 #[prost(bool, tag="20")]
2156 pub synthetic: bool,
2157}
2158#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2163pub struct CampaignOriginatingArchetype {
2164 #[prost(string, tag="1")]
2166 pub group_id: ::prost::alloc::string::String,
2167 #[prost(string, tag="2")]
2170 pub archetype_label: ::prost::alloc::string::String,
2171}
2172#[derive(Clone, PartialEq, ::prost::Message)]
2174pub struct AudienceMember {
2175 #[prost(string, tag="1")]
2177 pub user_id: ::prost::alloc::string::String,
2178 #[prost(map="string, string", tag="2")]
2180 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2181}
2182#[derive(Clone, PartialEq, ::prost::Message)]
2184pub struct CreateCampaignRequest {
2185 #[prost(string, tag="1")]
2188 pub name: ::prost::alloc::string::String,
2189 #[prost(string, tag="2")]
2192 pub template_id: ::prost::alloc::string::String,
2193 #[prost(int32, tag="3")]
2195 pub template_version: i32,
2196 #[prost(string, repeated, tag="4")]
2199 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2200 #[prost(message, optional, tag="5")]
2205 pub workflow: ::core::option::Option<WorkflowDefinition>,
2206 #[prost(string, tag="6")]
2209 pub sender_name: ::prost::alloc::string::String,
2210 #[prost(string, tag="7")]
2213 pub title: ::prost::alloc::string::String,
2214 #[prost(message, repeated, tag="8")]
2218 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
2219 #[prost(bool, tag="9")]
2222 pub include_restricted: bool,
2223 #[prost(bool, tag="10")]
2225 pub critical: bool,
2226 #[prost(string, tag="11")]
2228 pub default_locale: ::prost::alloc::string::String,
2229 #[prost(bool, tag="12")]
2233 pub wait_for_enrollment: bool,
2234 #[prost(message, optional, tag="13")]
2239 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2240}
2241#[derive(Clone, PartialEq, ::prost::Message)]
2243pub struct CreateCampaignResponse {
2244 #[prost(message, optional, tag="1")]
2246 pub campaign: ::core::option::Option<Campaign>,
2247}
2248#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2250pub struct StartCampaignRequest {
2251 #[prost(string, tag="1")]
2254 pub campaign_id: ::prost::alloc::string::String,
2255}
2256#[derive(Clone, PartialEq, ::prost::Message)]
2258pub struct StartCampaignResponse {
2259 #[prost(message, optional, tag="1")]
2261 pub campaign: ::core::option::Option<Campaign>,
2262}
2263#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2265pub struct GetCampaignRequest {
2266 #[prost(string, tag="1")]
2269 pub campaign_id: ::prost::alloc::string::String,
2270}
2271#[derive(Clone, PartialEq, ::prost::Message)]
2273pub struct GetCampaignResponse {
2274 #[prost(message, optional, tag="1")]
2276 pub campaign: ::core::option::Option<Campaign>,
2277}
2278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2280pub struct ListCampaignsRequest {
2281 #[prost(message, optional, tag="1")]
2283 pub pagination: ::core::option::Option<Pagination>,
2284}
2285#[derive(Clone, PartialEq, ::prost::Message)]
2287pub struct ListCampaignsResponse {
2288 #[prost(message, repeated, tag="1")]
2290 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
2291 #[prost(message, optional, tag="2")]
2293 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2294}
2295#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2297pub struct CancelCampaignRequest {
2298 #[prost(string, tag="1")]
2301 pub campaign_id: ::prost::alloc::string::String,
2302}
2303#[derive(Clone, PartialEq, ::prost::Message)]
2305pub struct CancelCampaignResponse {
2306 #[prost(message, optional, tag="1")]
2308 pub campaign: ::core::option::Option<Campaign>,
2309}
2310#[derive(Clone, PartialEq, ::prost::Message)]
2313pub struct UpdateCampaignRequest {
2314 #[prost(string, tag="1")]
2317 pub campaign_id: ::prost::alloc::string::String,
2318 #[prost(string, tag="2")]
2321 pub name: ::prost::alloc::string::String,
2322 #[prost(string, tag="3")]
2325 pub sender_name: ::prost::alloc::string::String,
2326 #[prost(string, tag="4")]
2329 pub title: ::prost::alloc::string::String,
2330 #[prost(string, tag="5")]
2333 pub template_id: ::prost::alloc::string::String,
2334 #[prost(int32, tag="6")]
2336 pub template_version: i32,
2337 #[prost(message, optional, tag="7")]
2339 pub workflow: ::core::option::Option<WorkflowDefinition>,
2340}
2341#[derive(Clone, PartialEq, ::prost::Message)]
2343pub struct UpdateCampaignResponse {
2344 #[prost(message, optional, tag="1")]
2346 pub campaign: ::core::option::Option<Campaign>,
2347}
2348#[derive(Clone, PartialEq, ::prost::Message)]
2355pub struct DeliveryMetadata {
2356 #[prost(message, optional, tag="1")]
2360 pub original_message: ::core::option::Option<Message>,
2361 #[prost(string, tag="2")]
2364 pub original_recipient_name: ::prost::alloc::string::String,
2365 #[prost(string, tag="3")]
2368 pub campaign_title: ::prost::alloc::string::String,
2369 #[prost(message, optional, tag="4")]
2372 pub reminder_fired_at: ::core::option::Option<::prost_types::Timestamp>,
2373}
2374#[derive(Clone, PartialEq, ::prost::Message)]
2375pub struct Delivery {
2376 #[prost(string, tag="1")]
2379 pub id: ::prost::alloc::string::String,
2380 #[prost(string, tag="2")]
2383 pub user_id: ::prost::alloc::string::String,
2384 #[prost(string, tag="3")]
2387 pub campaign_id: ::prost::alloc::string::String,
2388 #[prost(enumeration="DeliveryStatus", tag="4")]
2390 pub status: i32,
2391 #[prost(message, optional, tag="5")]
2393 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
2394 #[prost(message, optional, tag="6")]
2396 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
2397 #[prost(message, optional, tag="7")]
2399 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
2400 #[prost(string, tag="8")]
2402 pub recipient_email: ::prost::alloc::string::String,
2403 #[prost(enumeration="delivery::Kind", tag="12")]
2406 pub kind: i32,
2407 #[prost(string, tag="13")]
2411 pub parent_delivery_id: ::prost::alloc::string::String,
2412 #[prost(string, tag="14")]
2416 pub rendered_locale: ::prost::alloc::string::String,
2417 #[prost(message, optional, tag="15")]
2421 pub metadata: ::core::option::Option<DeliveryMetadata>,
2422 #[prost(bool, tag="9")]
2425 pub synthetic: bool,
2426}
2427pub mod delivery {
2429 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2431 #[repr(i32)]
2432 pub enum Kind {
2433 Unspecified = 0,
2435 Primary = 1,
2437 Escalation = 2,
2439 ReminderFyi = 3,
2444 }
2445 impl Kind {
2446 pub fn as_str_name(&self) -> &'static str {
2451 match self {
2452 Self::Unspecified => "KIND_UNSPECIFIED",
2453 Self::Primary => "KIND_PRIMARY",
2454 Self::Escalation => "KIND_ESCALATION",
2455 Self::ReminderFyi => "KIND_REMINDER_FYI",
2456 }
2457 }
2458 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2460 match value {
2461 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
2462 "KIND_PRIMARY" => Some(Self::Primary),
2463 "KIND_ESCALATION" => Some(Self::Escalation),
2464 "KIND_REMINDER_FYI" => Some(Self::ReminderFyi),
2465 _ => None,
2466 }
2467 }
2468 }
2469}
2470#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2472pub struct ListDeliveriesRequest {
2473 #[prost(string, tag="1")]
2476 pub campaign_id: ::prost::alloc::string::String,
2477 #[prost(enumeration="DeliveryStatus", tag="2")]
2479 pub status_filter: i32,
2480 #[prost(message, optional, tag="3")]
2482 pub pagination: ::core::option::Option<Pagination>,
2483}
2484#[derive(Clone, PartialEq, ::prost::Message)]
2486pub struct ListDeliveriesResponse {
2487 #[prost(message, repeated, tag="1")]
2489 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2490 #[prost(message, optional, tag="2")]
2492 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2493}
2494#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2499pub struct GetCampaignArchetypeBreakdownRequest {
2500 #[prost(string, tag="1")]
2503 pub campaign_id: ::prost::alloc::string::String,
2504}
2505#[derive(Clone, PartialEq, ::prost::Message)]
2510pub struct ArchetypeShareShift {
2511 #[prost(string, tag="1")]
2513 pub label: ::prost::alloc::string::String,
2514 #[prost(double, tag="2")]
2517 pub share_before: f64,
2518 #[prost(double, tag="3")]
2521 pub share_after: f64,
2522 #[prost(bool, tag="4")]
2525 pub is_origin: bool,
2526 #[prost(uint64, tag="5")]
2529 pub email_delivered_count: u64,
2530 #[prost(double, tag="6")]
2533 pub email_open_rate_real: f64,
2534 #[prost(double, tag="7")]
2537 pub email_open_rate_raw: f64,
2538}
2539#[derive(Clone, PartialEq, ::prost::Message)]
2544pub struct GetCampaignArchetypeBreakdownResponse {
2545 #[prost(message, repeated, tag="1")]
2548 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2549 #[prost(message, optional, tag="2")]
2552 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2553 #[prost(message, optional, tag="3")]
2555 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2556 #[prost(bool, tag="4")]
2560 pub insufficient_history: bool,
2561}
2562#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2569pub struct ResolveOrCreateShortCodeRequest {
2570 #[prost(string, tag="1")]
2573 pub campaign_id: ::prost::alloc::string::String,
2574}
2575#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2579pub struct ResolveOrCreateShortCodeResponse {
2580 #[prost(string, tag="1")]
2582 pub short_code: ::prost::alloc::string::String,
2583}
2584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2591pub struct GetCampaignByShortCodeRequest {
2592 #[prost(string, tag="1")]
2595 pub short_code: ::prost::alloc::string::String,
2596}
2597#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2604pub struct GetCampaignByShortCodeResponse {
2605 #[prost(string, tag="1")]
2608 pub campaign_id: ::prost::alloc::string::String,
2609 #[prost(string, tag="2")]
2612 pub org_id: ::prost::alloc::string::String,
2613 #[prost(string, tag="3")]
2617 pub organization_name: ::prost::alloc::string::String,
2618 #[prost(string, tag="4")]
2622 pub subject: ::prost::alloc::string::String,
2623}
2624#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2629pub struct Device {
2630 #[prost(string, tag="1")]
2633 pub device_id: ::prost::alloc::string::String,
2634 #[prost(string, tag="2")]
2637 pub user_id: ::prost::alloc::string::String,
2638 #[prost(enumeration="Platform", tag="3")]
2640 pub platform: i32,
2641 #[prost(string, tag="4")]
2643 pub push_token: ::prost::alloc::string::String,
2644 #[prost(bool, tag="5")]
2646 pub active: bool,
2647 #[prost(message, optional, tag="6")]
2649 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2650 #[prost(message, optional, tag="7")]
2652 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2653}
2654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2656pub struct DeviceSummary {
2657 #[prost(string, tag="1")]
2659 pub device_id: ::prost::alloc::string::String,
2660 #[prost(string, tag="2")]
2662 pub user_id: ::prost::alloc::string::String,
2663 #[prost(enumeration="Platform", tag="3")]
2665 pub platform: i32,
2666 #[prost(bool, tag="4")]
2668 pub active: bool,
2669 #[prost(message, optional, tag="5")]
2671 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2672 #[prost(message, optional, tag="6")]
2674 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2675}
2676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2678pub struct RegisterRequest {
2679 #[prost(string, tag="1")]
2682 pub device_id: ::prost::alloc::string::String,
2683 #[prost(enumeration="Platform", tag="2")]
2685 pub platform: i32,
2686 #[prost(string, tag="3")]
2689 pub push_token: ::prost::alloc::string::String,
2690}
2691#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2693pub struct RegisterResponse {
2694 #[prost(message, optional, tag="1")]
2696 pub device: ::core::option::Option<DeviceSummary>,
2697}
2698#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2700pub struct DeactivateRequest {
2701 #[prost(string, tag="1")]
2704 pub device_id: ::prost::alloc::string::String,
2705}
2706#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2708pub struct DeactivateResponse {
2709 #[prost(bool, tag="1")]
2711 pub success: bool,
2712}
2713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2715pub struct ListDevicesRequest {
2716}
2717#[derive(Clone, PartialEq, ::prost::Message)]
2719pub struct ListDevicesResponse {
2720 #[prost(message, repeated, tag="1")]
2722 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2723}
2724#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2726pub struct ListMemberDevicesRequest {
2727 #[prost(string, tag="1")]
2730 pub user_id: ::prost::alloc::string::String,
2731}
2732#[derive(Clone, PartialEq, ::prost::Message)]
2734pub struct ListMemberDevicesResponse {
2735 #[prost(message, repeated, tag="1")]
2737 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2738}
2739#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2744pub struct UserSettings {
2745 #[prost(enumeration="ThemePreference", tag="1")]
2747 pub theme_preference: i32,
2748 #[prost(string, tag="2")]
2752 pub preferred_locale: ::prost::alloc::string::String,
2753}
2754#[derive(Clone, PartialEq, ::prost::Message)]
2757pub struct UserProfile {
2758 #[prost(string, tag="1")]
2761 pub first_name: ::prost::alloc::string::String,
2762 #[prost(string, tag="2")]
2765 pub last_name: ::prost::alloc::string::String,
2766 #[prost(string, tag="3")]
2769 pub department: ::prost::alloc::string::String,
2770 #[prost(string, tag="4")]
2773 pub title: ::prost::alloc::string::String,
2774 #[prost(string, tag="5")]
2777 pub phone: ::prost::alloc::string::String,
2778 #[prost(string, tag="6")]
2781 pub location: ::prost::alloc::string::String,
2782 #[prost(string, tag="7")]
2785 pub employee_id: ::prost::alloc::string::String,
2786 #[prost(string, tag="8")]
2789 pub manager_name: ::prost::alloc::string::String,
2790 #[prost(string, tag="9")]
2793 pub start_date: ::prost::alloc::string::String,
2794 #[prost(map="string, string", tag="10")]
2797 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2798 #[prost(string, tag="11")]
2802 pub manager_id: ::prost::alloc::string::String,
2803}
2804#[derive(Clone, PartialEq, ::prost::Message)]
2806pub struct User {
2807 #[prost(string, tag="1")]
2809 pub id: ::prost::alloc::string::String,
2810 #[prost(string, tag="2")]
2813 pub email: ::prost::alloc::string::String,
2814 #[prost(string, tag="3")]
2817 pub name: ::prost::alloc::string::String,
2818 #[prost(enumeration="UserStatus", tag="5")]
2820 pub status: i32,
2821 #[prost(message, optional, tag="6")]
2823 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2824 #[prost(message, optional, tag="7")]
2826 pub role: ::core::option::Option<Role>,
2827 #[prost(string, tag="8")]
2829 pub role_id: ::prost::alloc::string::String,
2830 #[prost(message, optional, tag="9")]
2833 pub profile: ::core::option::Option<UserProfile>,
2834 #[prost(bool, tag="10")]
2837 pub processing_restricted: bool,
2838 #[prost(string, tag="11")]
2841 pub data_governance_region: ::prost::alloc::string::String,
2842}
2843#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2847#[repr(i32)]
2848pub enum UserStatus {
2849 Unspecified = 0,
2851 Invited = 1,
2853 Active = 2,
2855 Deactivated = 3,
2857}
2858impl UserStatus {
2859 pub fn as_str_name(&self) -> &'static str {
2864 match self {
2865 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2866 Self::Invited => "USER_STATUS_INVITED",
2867 Self::Active => "USER_STATUS_ACTIVE",
2868 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2869 }
2870 }
2871 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2873 match value {
2874 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2875 "USER_STATUS_INVITED" => Some(Self::Invited),
2876 "USER_STATUS_ACTIVE" => Some(Self::Active),
2877 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2878 _ => None,
2879 }
2880 }
2881}
2882#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2884#[repr(i32)]
2885pub enum ThemePreference {
2886 Unspecified = 0,
2888 Light = 1,
2890 Dark = 2,
2892 System = 3,
2894}
2895impl ThemePreference {
2896 pub fn as_str_name(&self) -> &'static str {
2901 match self {
2902 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2903 Self::Light => "THEME_PREFERENCE_LIGHT",
2904 Self::Dark => "THEME_PREFERENCE_DARK",
2905 Self::System => "THEME_PREFERENCE_SYSTEM",
2906 }
2907 }
2908 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2910 match value {
2911 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2912 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2913 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2914 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2915 _ => None,
2916 }
2917 }
2918}
2919#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2924pub struct Group {
2925 #[prost(string, tag="1")]
2927 pub id: ::prost::alloc::string::String,
2928 #[prost(string, tag="2")]
2931 pub name: ::prost::alloc::string::String,
2932 #[prost(string, tag="3")]
2935 pub description: ::prost::alloc::string::String,
2936 #[prost(int32, tag="4")]
2938 pub member_count: i32,
2939 #[prost(message, optional, tag="5")]
2941 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2942 #[prost(message, optional, tag="6")]
2944 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2945 #[prost(bool, tag="7")]
2947 pub is_default: bool,
2948 #[prost(string, tag="8")]
2950 pub created_by: ::prost::alloc::string::String,
2951}
2952#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2954pub struct CreateGroupRequest {
2955 #[prost(string, tag="1")]
2958 pub name: ::prost::alloc::string::String,
2959 #[prost(string, tag="2")]
2962 pub description: ::prost::alloc::string::String,
2963}
2964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2966pub struct CreateGroupResponse {
2967 #[prost(message, optional, tag="1")]
2969 pub group: ::core::option::Option<Group>,
2970}
2971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2973pub struct GetGroupRequest {
2974 #[prost(string, tag="1")]
2976 pub group_id: ::prost::alloc::string::String,
2977}
2978#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2980pub struct GetGroupResponse {
2981 #[prost(message, optional, tag="1")]
2983 pub group: ::core::option::Option<Group>,
2984}
2985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2987pub struct ListGroupsRequest {
2988 #[prost(message, optional, tag="1")]
2990 pub pagination: ::core::option::Option<Pagination>,
2991}
2992#[derive(Clone, PartialEq, ::prost::Message)]
2994pub struct ListGroupsResponse {
2995 #[prost(message, repeated, tag="1")]
2997 pub groups: ::prost::alloc::vec::Vec<Group>,
2998 #[prost(message, optional, tag="2")]
3000 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3001}
3002#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3004pub struct UpdateGroupRequest {
3005 #[prost(string, tag="1")]
3007 pub group_id: ::prost::alloc::string::String,
3008 #[prost(string, tag="2")]
3012 pub name: ::prost::alloc::string::String,
3013 #[prost(string, tag="3")]
3016 pub description: ::prost::alloc::string::String,
3017}
3018#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3020pub struct UpdateGroupResponse {
3021 #[prost(message, optional, tag="1")]
3023 pub group: ::core::option::Option<Group>,
3024}
3025#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3027pub struct DeleteGroupRequest {
3028 #[prost(string, tag="1")]
3031 pub group_id: ::prost::alloc::string::String,
3032}
3033#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3035pub struct DeleteGroupResponse {
3036}
3037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3039pub struct AddGroupMembersRequest {
3040 #[prost(string, tag="1")]
3042 pub group_id: ::prost::alloc::string::String,
3043 #[prost(string, repeated, tag="2")]
3047 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3048}
3049#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3051pub struct AddGroupMembersResponse {
3052 #[prost(message, optional, tag="1")]
3054 pub group: ::core::option::Option<Group>,
3055}
3056#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3058pub struct RemoveGroupMembersRequest {
3059 #[prost(string, tag="1")]
3061 pub group_id: ::prost::alloc::string::String,
3062 #[prost(string, repeated, tag="2")]
3065 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3066}
3067#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3069pub struct RemoveGroupMembersResponse {
3070 #[prost(message, optional, tag="1")]
3072 pub group: ::core::option::Option<Group>,
3073}
3074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3076pub struct ListGroupMembersRequest {
3077 #[prost(string, tag="1")]
3079 pub group_id: ::prost::alloc::string::String,
3080 #[prost(message, optional, tag="2")]
3082 pub pagination: ::core::option::Option<Pagination>,
3083}
3084#[derive(Clone, PartialEq, ::prost::Message)]
3086pub struct ListGroupMembersResponse {
3087 #[prost(message, repeated, tag="1")]
3089 pub users: ::prost::alloc::vec::Vec<User>,
3090 #[prost(message, optional, tag="2")]
3092 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3093}
3094#[derive(Clone, PartialEq, ::prost::Message)]
3096pub struct UserGroupMembership {
3097 #[prost(string, tag="1")]
3099 pub user_id: ::prost::alloc::string::String,
3100 #[prost(message, repeated, tag="2")]
3102 pub groups: ::prost::alloc::vec::Vec<Group>,
3103}
3104#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3106pub struct GetUserGroupMembershipsRequest {
3107 #[prost(string, repeated, tag="1")]
3110 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3111}
3112#[derive(Clone, PartialEq, ::prost::Message)]
3114pub struct GetUserGroupMembershipsResponse {
3115 #[prost(message, repeated, tag="1")]
3117 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
3118}
3119#[derive(Clone, PartialEq, ::prost::Message)]
3123pub struct TouchEvent {
3124 #[prost(string, tag="1")]
3127 pub screen_name: ::prost::alloc::string::String,
3128 #[prost(float, tag="2")]
3131 pub x_pct: f32,
3132 #[prost(float, tag="3")]
3135 pub y_pct: f32,
3136 #[prost(enumeration="TouchEventType", tag="4")]
3138 pub event_type: i32,
3139 #[prost(int32, tag="5")]
3141 pub screen_width: i32,
3142 #[prost(int32, tag="6")]
3144 pub screen_height: i32,
3145 #[prost(message, optional, tag="7")]
3147 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
3148 #[prost(string, tag="8")]
3151 pub campaign_id: ::prost::alloc::string::String,
3152}
3153#[derive(Clone, PartialEq, ::prost::Message)]
3155pub struct IngestTouchEventsRequest {
3156 #[prost(message, repeated, tag="1")]
3159 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
3160}
3161#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3163pub struct IngestTouchEventsResponse {
3164 #[prost(int32, tag="1")]
3166 pub ingested_count: i32,
3167}
3168#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3170pub struct HeatmapDataPoint {
3171 #[prost(float, tag="1")]
3173 pub x_pct: f32,
3174 #[prost(float, tag="2")]
3176 pub y_pct: f32,
3177 #[prost(float, tag="3")]
3179 pub value: f32,
3180}
3181#[derive(Clone, PartialEq, ::prost::Message)]
3183pub struct QueryHeatmapDataRequest {
3184 #[prost(string, tag="1")]
3187 pub screen_name: ::prost::alloc::string::String,
3188 #[prost(message, optional, tag="2")]
3190 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
3191 #[prost(message, optional, tag="3")]
3193 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
3194 #[prost(string, tag="4")]
3197 pub campaign_id: ::prost::alloc::string::String,
3198 #[prost(float, tag="6")]
3201 pub grid_resolution: f32,
3202 #[prost(enumeration="HeatmapMode", tag="7")]
3204 pub mode: i32,
3205 #[prost(enumeration="TouchEventType", repeated, tag="8")]
3207 pub event_types: ::prost::alloc::vec::Vec<i32>,
3208}
3209#[derive(Clone, PartialEq, ::prost::Message)]
3211pub struct QueryHeatmapDataResponse {
3212 #[prost(message, repeated, tag="1")]
3214 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
3215 #[prost(string, tag="3")]
3218 pub screenshot_url: ::prost::alloc::string::String,
3219 #[prost(bool, tag="4")]
3221 pub cohort_enabled: bool,
3222}
3223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3225pub struct UploadScreenshotRequest {
3226 #[prost(string, tag="1")]
3229 pub screen_name: ::prost::alloc::string::String,
3230 #[prost(string, tag="2")]
3232 pub app_version: ::prost::alloc::string::String,
3233 #[prost(bytes="vec", tag="3")]
3236 pub image_data: ::prost::alloc::vec::Vec<u8>,
3237}
3238#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3240pub struct UploadScreenshotResponse {
3241 #[prost(string, tag="1")]
3243 pub url: ::prost::alloc::string::String,
3244}
3245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3247pub struct ScreenScreenshot {
3248 #[prost(string, tag="1")]
3250 pub screen_name: ::prost::alloc::string::String,
3251 #[prost(string, tag="2")]
3253 pub url: ::prost::alloc::string::String,
3254 #[prost(string, tag="3")]
3256 pub app_version: ::prost::alloc::string::String,
3257}
3258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3260pub struct ListScreenshotsRequest {
3261}
3262#[derive(Clone, PartialEq, ::prost::Message)]
3264pub struct ListScreenshotsResponse {
3265 #[prost(message, repeated, tag="1")]
3267 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3268}
3269#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3273#[repr(i32)]
3274pub enum TouchEventType {
3275 Unspecified = 0,
3277 Tap = 1,
3279 LongPress = 2,
3281 Scroll = 3,
3283 ActionClick = 4,
3285}
3286impl TouchEventType {
3287 pub fn as_str_name(&self) -> &'static str {
3292 match self {
3293 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3294 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3295 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3296 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3297 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3298 }
3299 }
3300 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3302 match value {
3303 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3304 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3305 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3306 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3307 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3308 _ => None,
3309 }
3310 }
3311}
3312#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3314#[repr(i32)]
3315pub enum HeatmapMode {
3316 Unspecified = 0,
3318 Total = 1,
3320 Median = 2,
3322}
3323impl HeatmapMode {
3324 pub fn as_str_name(&self) -> &'static str {
3329 match self {
3330 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3331 Self::Total => "HEATMAP_MODE_TOTAL",
3332 Self::Median => "HEATMAP_MODE_MEDIAN",
3333 }
3334 }
3335 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3337 match value {
3338 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3339 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3340 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3341 _ => None,
3342 }
3343 }
3344}
3345#[derive(Clone, PartialEq, ::prost::Message)]
3349pub struct InboxEntry {
3350 #[prost(string, tag="1")]
3353 pub delivery_id: ::prost::alloc::string::String,
3354 #[prost(message, optional, tag="2")]
3356 pub message: ::core::option::Option<Message>,
3357 #[prost(enumeration="DeliveryStatus", tag="3")]
3359 pub status: i32,
3360 #[prost(bool, tag="4")]
3362 pub read: bool,
3363 #[prost(message, optional, tag="5")]
3365 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3366 #[prost(enumeration="delivery::Kind", tag="6")]
3370 pub kind: i32,
3371 #[prost(string, tag="7")]
3374 pub parent_delivery_id: ::prost::alloc::string::String,
3375 #[prost(string, tag="8")]
3378 pub rendered_locale: ::prost::alloc::string::String,
3379 #[prost(message, optional, tag="9")]
3383 pub metadata: ::core::option::Option<DeliveryMetadata>,
3384}
3385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3387pub struct SyncRequest {
3388 #[prost(message, optional, tag="1")]
3390 pub since: ::core::option::Option<::prost_types::Timestamp>,
3391 #[prost(int32, tag="2")]
3394 pub limit: i32,
3395}
3396#[derive(Clone, PartialEq, ::prost::Message)]
3398pub struct SyncResponse {
3399 #[prost(message, repeated, tag="1")]
3401 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3402 #[prost(message, optional, tag="2")]
3404 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3405}
3406#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3408pub struct MarkReadRequest {
3409 #[prost(string, tag="1")]
3412 pub delivery_id: ::prost::alloc::string::String,
3413}
3414#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3416pub struct MarkReadResponse {
3417 #[prost(bool, tag="1")]
3419 pub success: bool,
3420}
3421#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3423pub struct GetMessageRequest {
3424 #[prost(string, tag="1")]
3427 pub delivery_id: ::prost::alloc::string::String,
3428}
3429#[derive(Clone, PartialEq, ::prost::Message)]
3431pub struct GetMessageResponse {
3432 #[prost(message, optional, tag="1")]
3434 pub entry: ::core::option::Option<InboxEntry>,
3435}
3436#[derive(Clone, PartialEq, ::prost::Message)]
3441pub struct Archetype {
3442 #[prost(string, tag="1")]
3444 pub label: ::prost::alloc::string::String,
3445 #[prost(string, tag="2")]
3447 pub description: ::prost::alloc::string::String,
3448 #[prost(float, tag="3")]
3450 pub percentage: f32,
3451 #[prost(map="string, double", tag="4")]
3458 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3459 #[prost(map="string, message", tag="5")]
3464 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3465 #[prost(message, optional, tag="6")]
3469 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3470 #[prost(message, optional, tag="7")]
3474 pub forecast: ::core::option::Option<ArchetypeForecast>,
3475 #[prost(message, repeated, tag="8")]
3481 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3482 #[prost(message, optional, tag="9")]
3485 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3486 #[prost(message, optional, tag="10")]
3490 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3491 #[prost(enumeration="ArchetypeSource", tag="11")]
3495 pub source: i32,
3496}
3497#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3502pub struct DimensionStats {
3503 #[prost(double, tag="1")]
3505 pub centroid: f64,
3506 #[prost(double, tag="2")]
3508 pub p25: f64,
3509 #[prost(double, tag="3")]
3511 pub p50: f64,
3512 #[prost(double, tag="4")]
3514 pub p75: f64,
3515 #[prost(double, tag="5")]
3518 pub group_p50: f64,
3519}
3520#[derive(Clone, PartialEq, ::prost::Message)]
3524pub struct TapHeatmap {
3525 #[prost(int32, tag="1")]
3527 pub width: i32,
3528 #[prost(int32, tag="2")]
3530 pub height: i32,
3531 #[prost(double, repeated, tag="3")]
3534 pub values: ::prost::alloc::vec::Vec<f64>,
3535 #[prost(int32, tag="4")]
3538 pub session_count: i32,
3539 #[prost(message, repeated, tag="5")]
3543 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3544}
3545#[derive(Clone, PartialEq, ::prost::Message)]
3547pub struct TapHeatmapLayer {
3548 #[prost(string, tag="1")]
3551 pub event_type: ::prost::alloc::string::String,
3552 #[prost(double, repeated, tag="2")]
3555 pub values: ::prost::alloc::vec::Vec<f64>,
3556}
3557#[derive(Clone, PartialEq, ::prost::Message)]
3559pub struct ArchetypeForecast {
3560 #[prost(message, repeated, tag="1")]
3563 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3564}
3565#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3567pub struct ForecastHorizon {
3568 #[prost(int32, tag="1")]
3570 pub days: i32,
3571 #[prost(double, tag="2")]
3574 pub predicted_share: f64,
3575 #[prost(double, tag="3")]
3577 pub lower: f64,
3578 #[prost(double, tag="4")]
3580 pub upper: f64,
3581 #[prost(enumeration="ConfidenceLevel", tag="5")]
3583 pub confidence: i32,
3584}
3585#[derive(Clone, PartialEq, ::prost::Message)]
3588pub struct ExemplarSession {
3589 #[prost(string, tag="1")]
3592 pub session_id: ::prost::alloc::string::String,
3593 #[prost(int32, tag="2")]
3596 pub rank: i32,
3597 #[prost(double, tag="3")]
3599 pub distance: f64,
3600 #[prost(int32, tag="4")]
3602 pub duration_seconds: i32,
3603 #[prost(string, tag="5")]
3607 pub platform: ::prost::alloc::string::String,
3608}
3609#[derive(Clone, PartialEq, ::prost::Message)]
3613pub struct ScreenDwell {
3614 #[prost(message, repeated, tag="1")]
3617 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3618}
3619#[derive(Clone, PartialEq, ::prost::Message)]
3620pub struct ScreenDwellEntry {
3621 #[prost(string, tag="1")]
3625 pub screen_name: ::prost::alloc::string::String,
3626 #[prost(double, tag="2")]
3628 pub median_seconds: f64,
3629 #[prost(double, tag="3")]
3631 pub p75_seconds: f64,
3632 #[prost(int32, tag="4")]
3634 pub session_count: i32,
3635}
3636#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3640pub struct ResponseTimeline {
3641 #[prost(message, optional, tag="1")]
3643 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3644 #[prost(message, optional, tag="2")]
3647 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3648 #[prost(message, optional, tag="3")]
3651 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3652 #[prost(int32, tag="4")]
3654 pub delivery_count: i32,
3655}
3656#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3658pub struct LatencyPercentiles {
3659 #[prost(double, tag="1")]
3660 pub p50: f64,
3661 #[prost(double, tag="2")]
3662 pub p75: f64,
3663 #[prost(double, tag="3")]
3664 pub p95: f64,
3665}
3666#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3669pub struct CohortPrediction {
3670 #[prost(float, tag="1")]
3672 pub predicted_ack_rate: f32,
3673 #[prost(float, tag="2")]
3675 pub confidence_low: f32,
3676 #[prost(float, tag="3")]
3678 pub confidence_high: f32,
3679 #[prost(enumeration="ConfidenceLevel", tag="4")]
3681 pub confidence_level: i32,
3682 #[prost(int32, tag="5")]
3684 pub data_point_count: i32,
3685}
3686#[derive(Clone, PartialEq, ::prost::Message)]
3688pub struct CampaignAdvisory {
3689 #[prost(message, optional, tag="1")]
3691 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3692 #[prost(int32, tag="2")]
3695 pub suggested_escalation_delay_minutes: i32,
3696 #[prost(message, repeated, tag="3")]
3698 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3699}
3700#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3702pub struct GetGroupArchetypesRequest {
3703 #[prost(string, tag="1")]
3705 pub group_id: ::prost::alloc::string::String,
3706}
3707#[derive(Clone, PartialEq, ::prost::Message)]
3709pub struct GetGroupArchetypesResponse {
3710 #[prost(message, repeated, tag="1")]
3712 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3713 #[prost(int32, tag="2")]
3715 pub data_point_count: i32,
3716 #[prost(enumeration="PipelineState", tag="3")]
3720 pub pipeline_state: i32,
3721 #[prost(enumeration="ConfidenceLevel", tag="4")]
3726 pub confidence_level: i32,
3727}
3728#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3730pub struct PredictCampaignAckRequest {
3731 #[prost(string, tag="1")]
3733 pub group_id: ::prost::alloc::string::String,
3734 #[prost(string, tag="2")]
3736 pub template_type: ::prost::alloc::string::String,
3737 #[prost(int32, tag="3")]
3739 pub workflow_step_count: i32,
3740}
3741#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3743pub struct PredictCampaignAckResponse {
3744 #[prost(message, optional, tag="1")]
3746 pub prediction: ::core::option::Option<CohortPrediction>,
3747}
3748#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3750pub struct GetCampaignAdvisoryRequest {
3751 #[prost(string, tag="1")]
3753 pub group_id: ::prost::alloc::string::String,
3754 #[prost(string, tag="2")]
3756 pub template_id: ::prost::alloc::string::String,
3757 #[prost(int32, tag="3")]
3759 pub template_version: i32,
3760 #[prost(int32, tag="4")]
3762 pub workflow_step_count: i32,
3763}
3764#[derive(Clone, PartialEq, ::prost::Message)]
3766pub struct GetCampaignAdvisoryResponse {
3767 #[prost(message, optional, tag="1")]
3769 pub advisory: ::core::option::Option<CampaignAdvisory>,
3770}
3771#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3773pub struct GetInsightNarrativeRequest {
3774 #[prost(string, tag="1")]
3776 pub group_id: ::prost::alloc::string::String,
3777 #[prost(string, tag="2")]
3779 pub prompt_name: ::prost::alloc::string::String,
3780}
3781#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3783pub struct GetInsightNarrativeResponse {
3784 #[prost(string, tag="1")]
3786 pub narrative: ::prost::alloc::string::String,
3787 #[prost(message, optional, tag="2")]
3789 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3790 #[prost(string, tag="3")]
3792 pub model_id: ::prost::alloc::string::String,
3793}
3794#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3797pub struct TriggerMlPipelineRequest {
3798}
3799#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3801pub struct TriggerMlPipelineResponse {
3802 #[prost(int32, tag="1")]
3804 pub remaining_this_month: i32,
3805 #[prost(message, optional, tag="2")]
3807 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3808}
3809#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3813pub struct TriggerArchetypeClusteringRequest {
3814 #[prost(string, tag="1")]
3816 pub group_id: ::prost::alloc::string::String,
3817}
3818#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3820pub struct TriggerArchetypeClusteringResponse {
3821 #[prost(string, tag="1")]
3824 pub workflow_id: ::prost::alloc::string::String,
3825 #[prost(int32, tag="2")]
3828 pub remaining_this_month: i32,
3829 #[prost(message, optional, tag="3")]
3832 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3833}
3834#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3838pub struct GenerateCampaignBodyDraftRequest {
3839 #[prost(string, tag="1")]
3841 pub group_id: ::prost::alloc::string::String,
3842 #[prost(string, tag="2")]
3844 pub archetype_label: ::prost::alloc::string::String,
3845 #[prost(string, tag="3")]
3848 pub lane_action: ::prost::alloc::string::String,
3849}
3850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3852pub struct GenerateCampaignBodyDraftResponse {
3853 #[prost(string, tag="1")]
3856 pub body_markdown: ::prost::alloc::string::String,
3857}
3858#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3862#[repr(i32)]
3863pub enum ConfidenceLevel {
3864 Unspecified = 0,
3865 Low = 1,
3867 Medium = 2,
3869 High = 3,
3871}
3872impl ConfidenceLevel {
3873 pub fn as_str_name(&self) -> &'static str {
3878 match self {
3879 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3880 Self::Low => "CONFIDENCE_LEVEL_LOW",
3881 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3882 Self::High => "CONFIDENCE_LEVEL_HIGH",
3883 }
3884 }
3885 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3887 match value {
3888 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3889 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3890 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3891 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3892 _ => None,
3893 }
3894 }
3895}
3896#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3902#[repr(i32)]
3903pub enum PipelineState {
3904 Unspecified = 0,
3905 NeverRun = 1,
3908 BelowThreshold = 2,
3912 NoClusters = 3,
3916 Ready = 4,
3918}
3919impl PipelineState {
3920 pub fn as_str_name(&self) -> &'static str {
3925 match self {
3926 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3927 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3928 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3929 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3930 Self::Ready => "PIPELINE_STATE_READY",
3931 }
3932 }
3933 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3935 match value {
3936 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3937 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3938 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3939 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3940 "PIPELINE_STATE_READY" => Some(Self::Ready),
3941 _ => None,
3942 }
3943 }
3944}
3945#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3951#[repr(i32)]
3952pub enum ArchetypeSource {
3953 Unspecified = 0,
3954 Ml = 1,
3957 Provisional = 2,
3962}
3963impl ArchetypeSource {
3964 pub fn as_str_name(&self) -> &'static str {
3969 match self {
3970 Self::Unspecified => "ARCHETYPE_SOURCE_UNSPECIFIED",
3971 Self::Ml => "ARCHETYPE_SOURCE_ML",
3972 Self::Provisional => "ARCHETYPE_SOURCE_PROVISIONAL",
3973 }
3974 }
3975 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3977 match value {
3978 "ARCHETYPE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
3979 "ARCHETYPE_SOURCE_ML" => Some(Self::Ml),
3980 "ARCHETYPE_SOURCE_PROVISIONAL" => Some(Self::Provisional),
3981 _ => None,
3982 }
3983 }
3984}
3985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3992pub struct Reachability {
3993 #[prost(string, tag="1")]
3995 pub id: ::prost::alloc::string::String,
3996 #[prost(string, tag="2")]
3998 pub org_id: ::prost::alloc::string::String,
3999 #[prost(string, tag="3")]
4001 pub user_id: ::prost::alloc::string::String,
4002 #[prost(enumeration="ChannelName", tag="4")]
4004 pub channel: i32,
4005 #[prost(message, optional, tag="5")]
4007 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4008 #[prost(message, optional, tag="6")]
4010 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4011 #[prost(string, optional, tag="7")]
4015 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4016}
4017#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4021pub struct RegionPolicy {
4022 #[prost(string, tag="1")]
4023 pub org_id: ::prost::alloc::string::String,
4024 #[prost(enumeration="ChannelName", tag="2")]
4025 pub channel: i32,
4026 #[prost(string, repeated, tag="3")]
4029 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4030 #[prost(message, optional, tag="4")]
4031 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4032}
4033#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4041#[repr(i32)]
4042pub enum DispatchStatus {
4043 Unspecified = 0,
4045 Sent = 1,
4047 Failed = 2,
4050 Deduped = 3,
4054}
4055impl DispatchStatus {
4056 pub fn as_str_name(&self) -> &'static str {
4061 match self {
4062 Self::Unspecified => "DISPATCH_STATUS_UNSPECIFIED",
4063 Self::Sent => "DISPATCH_STATUS_SENT",
4064 Self::Failed => "DISPATCH_STATUS_FAILED",
4065 Self::Deduped => "DISPATCH_STATUS_DEDUPED",
4066 }
4067 }
4068 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4070 match value {
4071 "DISPATCH_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
4072 "DISPATCH_STATUS_SENT" => Some(Self::Sent),
4073 "DISPATCH_STATUS_FAILED" => Some(Self::Failed),
4074 "DISPATCH_STATUS_DEDUPED" => Some(Self::Deduped),
4075 _ => None,
4076 }
4077 }
4078}
4079#[derive(Clone, PartialEq, ::prost::Message)]
4086pub struct DispatchToChannelRequest {
4087 #[prost(string, tag="1")]
4089 pub dispatch_id: ::prost::alloc::string::String,
4090 #[prost(string, tag="2")]
4091 pub org_id: ::prost::alloc::string::String,
4092 #[prost(string, tag="3")]
4093 pub user_id: ::prost::alloc::string::String,
4094 #[prost(enumeration="ChannelName", tag="4")]
4096 pub channel: i32,
4097 #[prost(string, tag="5")]
4099 pub template_id: ::prost::alloc::string::String,
4100 #[prost(map="string, string", tag="6")]
4102 pub template_vars: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4103 #[prost(string, tag="7")]
4105 pub locale: ::prost::alloc::string::String,
4106 #[prost(string, optional, tag="8")]
4109 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4110}
4111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4112pub struct DispatchToChannelResponse {
4113 #[prost(string, tag="1")]
4115 pub dispatch_id: ::prost::alloc::string::String,
4116 #[prost(enumeration="DispatchStatus", tag="2")]
4118 pub status: i32,
4119 #[prost(string, optional, tag="3")]
4122 pub failure_reason: ::core::option::Option<::prost::alloc::string::String>,
4123}
4124#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4131pub struct UpsertReachabilityRequest {
4132 #[prost(string, tag="1")]
4133 pub org_id: ::prost::alloc::string::String,
4134 #[prost(string, tag="2")]
4135 pub user_id: ::prost::alloc::string::String,
4136 #[prost(enumeration="ChannelName", tag="3")]
4137 pub channel: i32,
4138 #[prost(string, tag="4")]
4142 pub identifier_plaintext: ::prost::alloc::string::String,
4143 #[prost(string, optional, tag="5")]
4146 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
4147}
4148#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4149pub struct UpsertReachabilityResponse {
4150 #[prost(message, optional, tag="1")]
4153 pub reachability: ::core::option::Option<Reachability>,
4154}
4155#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4161pub struct RemoveReachabilityRequest {
4162 #[prost(string, tag="1")]
4163 pub org_id: ::prost::alloc::string::String,
4164 #[prost(string, tag="2")]
4165 pub user_id: ::prost::alloc::string::String,
4166 #[prost(enumeration="ChannelName", tag="3")]
4167 pub channel: i32,
4168}
4169#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4170pub struct RemoveReachabilityResponse {
4171 #[prost(bool, tag="1")]
4174 pub removed: bool,
4175}
4176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4181pub struct GetReachabilityRequest {
4182 #[prost(string, tag="1")]
4183 pub org_id: ::prost::alloc::string::String,
4184 #[prost(string, tag="2")]
4185 pub user_id: ::prost::alloc::string::String,
4186 #[prost(enumeration="ChannelName", tag="3")]
4187 pub channel: i32,
4188}
4189#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4190pub struct GetReachabilityResponse {
4191 #[prost(message, optional, tag="1")]
4193 pub reachability: ::core::option::Option<Reachability>,
4194}
4195#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4202pub struct ListReachabilityForUserRequest {
4203 #[prost(string, tag="1")]
4204 pub org_id: ::prost::alloc::string::String,
4205 #[prost(string, tag="2")]
4206 pub user_id: ::prost::alloc::string::String,
4207}
4208#[derive(Clone, PartialEq, ::prost::Message)]
4209pub struct ListReachabilityForUserResponse {
4210 #[prost(message, repeated, tag="1")]
4212 pub reachabilities: ::prost::alloc::vec::Vec<Reachability>,
4213}
4214#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4217pub struct GetRegionPolicyRequest {
4218 #[prost(string, tag="1")]
4219 pub org_id: ::prost::alloc::string::String,
4220 #[prost(enumeration="ChannelName", tag="2")]
4221 pub channel: i32,
4222}
4223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4224pub struct GetRegionPolicyResponse {
4225 #[prost(message, optional, tag="1")]
4228 pub policy: ::core::option::Option<RegionPolicy>,
4229}
4230#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4232pub struct SetRegionPolicyRequest {
4233 #[prost(string, tag="1")]
4234 pub org_id: ::prost::alloc::string::String,
4235 #[prost(enumeration="ChannelName", tag="2")]
4236 pub channel: i32,
4237 #[prost(string, repeated, tag="3")]
4239 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4240}
4241#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4242pub struct SetRegionPolicyResponse {
4243 #[prost(message, optional, tag="1")]
4244 pub policy: ::core::option::Option<RegionPolicy>,
4245}
4246#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4253pub struct GetCostCapPolicyRequest {
4254 #[prost(string, tag="1")]
4255 pub org_id: ::prost::alloc::string::String,
4256 #[prost(enumeration="ChannelName", tag="2")]
4257 pub channel: i32,
4258}
4259#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4260pub struct GetCostCapPolicyResponse {
4261 #[prost(string, tag="1")]
4262 pub org_id: ::prost::alloc::string::String,
4263 #[prost(enumeration="ChannelName", tag="2")]
4264 pub channel: i32,
4265 #[prost(int64, tag="3")]
4267 pub cap_micros: i64,
4268 #[prost(int64, tag="4")]
4270 pub used_micros: i64,
4271 #[prost(int32, tag="5")]
4273 pub period_yyyymm: i32,
4274}
4275#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4278pub struct SetCostCapPolicyRequest {
4279 #[prost(string, tag="1")]
4280 pub org_id: ::prost::alloc::string::String,
4281 #[prost(enumeration="ChannelName", tag="2")]
4282 pub channel: i32,
4283 #[prost(int64, tag="3")]
4284 pub cap_micros: i64,
4285}
4286#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4287pub struct SetCostCapPolicyResponse {
4288 #[prost(string, tag="1")]
4289 pub org_id: ::prost::alloc::string::String,
4290 #[prost(enumeration="ChannelName", tag="2")]
4291 pub channel: i32,
4292 #[prost(int64, tag="3")]
4293 pub cap_micros: i64,
4294 #[prost(int64, tag="4")]
4295 pub used_micros: i64,
4296 #[prost(int32, tag="5")]
4297 pub period_yyyymm: i32,
4298}
4299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4304pub struct GetOrgWebhookConfigRequest {
4305 #[prost(string, tag="1")]
4306 pub org_id: ::prost::alloc::string::String,
4307}
4308#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4309pub struct GetOrgWebhookConfigResponse {
4310 #[prost(string, tag="1")]
4311 pub org_id: ::prost::alloc::string::String,
4312 #[prost(string, tag="2")]
4315 pub url: ::prost::alloc::string::String,
4316 #[prost(bool, tag="3")]
4318 pub enabled: bool,
4319 #[prost(bool, tag="4")]
4322 pub has_secret: bool,
4323 #[prost(message, optional, tag="5")]
4324 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4325 #[prost(message, optional, tag="6")]
4326 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4327}
4328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4333pub struct SetOrgWebhookConfigRequest {
4334 #[prost(string, tag="1")]
4335 pub org_id: ::prost::alloc::string::String,
4336 #[prost(string, tag="2")]
4339 pub url: ::prost::alloc::string::String,
4340 #[prost(bool, tag="3")]
4341 pub enabled: bool,
4342 #[prost(string, optional, tag="4")]
4346 pub secret: ::core::option::Option<::prost::alloc::string::String>,
4347}
4348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4349pub struct SetOrgWebhookConfigResponse {
4350 #[prost(string, tag="1")]
4351 pub org_id: ::prost::alloc::string::String,
4352 #[prost(string, tag="2")]
4353 pub url: ::prost::alloc::string::String,
4354 #[prost(bool, tag="3")]
4355 pub enabled: bool,
4356 #[prost(bool, tag="4")]
4357 pub has_secret: bool,
4358 #[prost(message, optional, tag="5")]
4359 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4360 #[prost(message, optional, tag="6")]
4361 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4362}
4363#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4371pub struct CreateChannelConnectLinkRequest {
4372 #[prost(string, tag="1")]
4373 pub org_id: ::prost::alloc::string::String,
4374 #[prost(string, tag="2")]
4377 pub user_id: ::prost::alloc::string::String,
4378 #[prost(enumeration="ChannelName", tag="3")]
4382 pub channel: i32,
4383}
4384#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4385pub struct CreateChannelConnectLinkResponse {
4386 #[prost(string, tag="1")]
4389 pub connect_url: ::prost::alloc::string::String,
4390 #[prost(string, tag="2")]
4394 pub token: ::prost::alloc::string::String,
4395 #[prost(message, optional, tag="3")]
4398 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4399}
4400#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4405pub struct InviteLink {
4406 #[prost(string, tag="1")]
4408 pub id: ::prost::alloc::string::String,
4409 #[prost(string, tag="2")]
4411 pub token: ::prost::alloc::string::String,
4412 #[prost(string, tag="3")]
4414 pub role_id: ::prost::alloc::string::String,
4415 #[prost(int32, tag="4")]
4418 pub max_uses: i32,
4419 #[prost(int32, tag="5")]
4421 pub use_count: i32,
4422 #[prost(message, optional, tag="6")]
4424 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4425 #[prost(message, optional, tag="7")]
4427 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
4428 #[prost(string, tag="8")]
4430 pub created_by: ::prost::alloc::string::String,
4431 #[prost(message, optional, tag="9")]
4433 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4434 #[prost(string, tag="10")]
4437 pub data_governance_region: ::prost::alloc::string::String,
4438}
4439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4441pub struct CreateInviteLinkRequest {
4442 #[prost(string, tag="1")]
4444 pub role_id: ::prost::alloc::string::String,
4445 #[prost(int32, tag="2")]
4447 pub max_uses: i32,
4448 #[prost(int32, tag="3")]
4451 pub expires_in_hours: i32,
4452 #[prost(string, tag="4")]
4455 pub data_governance_region: ::prost::alloc::string::String,
4456}
4457#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4459pub struct CreateInviteLinkResponse {
4460 #[prost(message, optional, tag="1")]
4462 pub invite_link: ::core::option::Option<InviteLink>,
4463 #[prost(string, tag="2")]
4465 pub url: ::prost::alloc::string::String,
4466}
4467#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4469pub struct ListInviteLinksRequest {
4470}
4471#[derive(Clone, PartialEq, ::prost::Message)]
4473pub struct ListInviteLinksResponse {
4474 #[prost(message, repeated, tag="1")]
4476 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
4477}
4478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4480pub struct RevokeInviteLinkRequest {
4481 #[prost(string, tag="1")]
4483 pub invite_link_id: ::prost::alloc::string::String,
4484}
4485#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4487pub struct RevokeInviteLinkResponse {
4488}
4489#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4491pub struct RedeemInviteLinkRequest {
4492 #[prost(string, tag="1")]
4494 pub token: ::prost::alloc::string::String,
4495}
4496#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4498pub struct RedeemInviteLinkResponse {
4499 #[prost(string, tag="1")]
4501 pub organization_name: ::prost::alloc::string::String,
4502}
4503#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4505pub struct ValidateInviteLinkRequest {
4506 #[prost(string, tag="1")]
4508 pub token: ::prost::alloc::string::String,
4509 #[prost(string, tag="2")]
4512 pub email: ::prost::alloc::string::String,
4513}
4514#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4516pub struct ValidateInviteLinkResponse {
4517 #[prost(string, tag="1")]
4519 pub organization_name: ::prost::alloc::string::String,
4520}
4521#[derive(Clone, PartialEq, ::prost::Message)]
4525pub struct InviteUserRequest {
4526 #[prost(string, tag="1")]
4529 pub email: ::prost::alloc::string::String,
4530 #[prost(string, tag="2")]
4533 pub name: ::prost::alloc::string::String,
4534 #[prost(string, tag="4")]
4536 pub role_id: ::prost::alloc::string::String,
4537 #[prost(message, optional, tag="5")]
4539 pub profile: ::core::option::Option<UserProfile>,
4540 #[prost(string, tag="6")]
4543 pub data_governance_region: ::prost::alloc::string::String,
4544}
4545#[derive(Clone, PartialEq, ::prost::Message)]
4547pub struct InviteUserResponse {
4548 #[prost(message, optional, tag="1")]
4550 pub user: ::core::option::Option<User>,
4551}
4552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4554pub struct GetUserRequest {
4555 #[prost(string, tag="1")]
4557 pub user_id: ::prost::alloc::string::String,
4558}
4559#[derive(Clone, PartialEq, ::prost::Message)]
4561pub struct GetUserResponse {
4562 #[prost(message, optional, tag="1")]
4564 pub user: ::core::option::Option<User>,
4565}
4566#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4568pub struct ListUsersRequest {
4569 #[prost(message, optional, tag="1")]
4571 pub pagination: ::core::option::Option<Pagination>,
4572}
4573#[derive(Clone, PartialEq, ::prost::Message)]
4575pub struct ListUsersResponse {
4576 #[prost(message, repeated, tag="1")]
4578 pub users: ::prost::alloc::vec::Vec<User>,
4579 #[prost(message, optional, tag="2")]
4581 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4582}
4583#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4585pub struct UpdateUserRoleRequest {
4586 #[prost(string, tag="1")]
4588 pub user_id: ::prost::alloc::string::String,
4589 #[prost(string, tag="2")]
4591 pub role_id: ::prost::alloc::string::String,
4592}
4593#[derive(Clone, PartialEq, ::prost::Message)]
4595pub struct UpdateUserRoleResponse {
4596 #[prost(message, optional, tag="1")]
4598 pub user: ::core::option::Option<User>,
4599}
4600#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4602pub struct DeactivateUserRequest {
4603 #[prost(string, tag="1")]
4605 pub user_id: ::prost::alloc::string::String,
4606}
4607#[derive(Clone, PartialEq, ::prost::Message)]
4609pub struct DeactivateUserResponse {
4610 #[prost(message, optional, tag="1")]
4612 pub user: ::core::option::Option<User>,
4613}
4614#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4616pub struct ReactivateUserRequest {
4617 #[prost(string, tag="1")]
4619 pub user_id: ::prost::alloc::string::String,
4620}
4621#[derive(Clone, PartialEq, ::prost::Message)]
4623pub struct ReactivateUserResponse {
4624 #[prost(message, optional, tag="1")]
4626 pub user: ::core::option::Option<User>,
4627}
4628#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4630pub struct RevokeInviteRequest {
4631 #[prost(string, tag="1")]
4634 pub user_id: ::prost::alloc::string::String,
4635}
4636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4638pub struct RevokeInviteResponse {
4639}
4640#[derive(Clone, PartialEq, ::prost::Message)]
4642pub struct UpdateUserProfileRequest {
4643 #[prost(string, tag="1")]
4646 pub user_id: ::prost::alloc::string::String,
4647 #[prost(message, optional, tag="2")]
4649 pub profile: ::core::option::Option<UserProfile>,
4650}
4651#[derive(Clone, PartialEq, ::prost::Message)]
4653pub struct UpdateUserProfileResponse {
4654 #[prost(message, optional, tag="1")]
4656 pub user: ::core::option::Option<User>,
4657}
4658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4660pub struct GetUserSettingsRequest {
4661}
4662#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4664pub struct GetUserSettingsResponse {
4665 #[prost(message, optional, tag="1")]
4667 pub settings: ::core::option::Option<UserSettings>,
4668}
4669#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4671pub struct UpdateUserSettingsRequest {
4672 #[prost(message, optional, tag="1")]
4675 pub settings: ::core::option::Option<UserSettings>,
4676}
4677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4679pub struct UpdateUserSettingsResponse {
4680 #[prost(message, optional, tag="1")]
4682 pub settings: ::core::option::Option<UserSettings>,
4683}
4684#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4686pub struct BulkInviteUsersRequest {
4687 #[prost(string, repeated, tag="1")]
4690 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4691 #[prost(string, tag="2")]
4693 pub role_id: ::prost::alloc::string::String,
4694}
4695#[derive(Clone, PartialEq, ::prost::Message)]
4697pub struct BulkInviteResult {
4698 #[prost(string, tag="1")]
4700 pub email: ::prost::alloc::string::String,
4701 #[prost(bool, tag="2")]
4703 pub success: bool,
4704 #[prost(string, tag="3")]
4707 pub error: ::prost::alloc::string::String,
4708 #[prost(message, optional, tag="4")]
4710 pub user: ::core::option::Option<User>,
4711}
4712#[derive(Clone, PartialEq, ::prost::Message)]
4714pub struct BulkInviteUsersResponse {
4715 #[prost(message, repeated, tag="1")]
4717 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
4718 #[prost(int32, tag="2")]
4720 pub invited_count: i32,
4721 #[prost(int32, tag="3")]
4723 pub failed_count: i32,
4724}
4725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4729pub struct ConfirmPasskeyEnrollmentRequest {
4730}
4731#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4733pub struct ConfirmPasskeyEnrollmentResponse {
4734 #[prost(bool, tag="1")]
4736 pub confirmed: bool,
4737}
4738#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4740pub struct UpdateUserRegionRequest {
4741 #[prost(string, tag="1")]
4743 pub user_id: ::prost::alloc::string::String,
4744 #[prost(string, tag="2")]
4747 pub data_governance_region: ::prost::alloc::string::String,
4748}
4749#[derive(Clone, PartialEq, ::prost::Message)]
4751pub struct UpdateUserRegionResponse {
4752 #[prost(message, optional, tag="1")]
4754 pub user: ::core::option::Option<User>,
4755 #[prost(string, tag="2")]
4758 pub migration_workflow_id: ::prost::alloc::string::String,
4759}
4760#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4769pub struct Pepper {
4770 #[prost(int32, tag="1")]
4772 pub version: i32,
4773 #[prost(bytes="vec", tag="2")]
4777 pub key_material: ::prost::alloc::vec::Vec<u8>,
4778}
4779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4786pub struct GetPeppersRequest {
4787 #[prost(string, tag="1")]
4789 pub org_id: ::prost::alloc::string::String,
4790 #[prost(string, tag="2")]
4793 pub purpose: ::prost::alloc::string::String,
4794}
4795#[derive(Clone, PartialEq, ::prost::Message)]
4796pub struct GetPeppersResponse {
4797 #[prost(message, repeated, tag="1")]
4802 pub peppers: ::prost::alloc::vec::Vec<Pepper>,
4803}
4804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4809pub struct SsoAttributeMapping {
4810 #[prost(string, tag="1")]
4813 pub idp_claim: ::prost::alloc::string::String,
4814 #[prost(string, tag="2")]
4818 pub profile_field: ::prost::alloc::string::String,
4819}
4820#[derive(Clone, PartialEq, ::prost::Message)]
4822pub struct Organization {
4823 #[prost(string, tag="1")]
4825 pub id: ::prost::alloc::string::String,
4826 #[prost(string, tag="2")]
4829 pub name: ::prost::alloc::string::String,
4830 #[prost(message, optional, tag="3")]
4832 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4833 #[prost(message, optional, tag="4")]
4835 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4836 #[prost(enumeration="Industry", tag="5")]
4838 pub industry: i32,
4839 #[prost(enumeration="CompanySize", tag="6")]
4841 pub company_size: i32,
4842 #[prost(message, repeated, tag="7")]
4845 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4846 #[prost(string, tag="8")]
4850 pub default_locale: ::prost::alloc::string::String,
4851 #[prost(enumeration="OrgType", tag="9")]
4853 pub org_type: i32,
4854 #[prost(message, optional, tag="10")]
4856 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4857 #[prost(string, tag="11")]
4860 pub data_governance_region: ::prost::alloc::string::String,
4861 #[prost(string, tag="12")]
4864 pub data_content_region: ::prost::alloc::string::String,
4865 #[prost(int32, tag="13")]
4870 pub ml_retrain_cold_threshold: i32,
4871 #[prost(bool, tag="14")]
4873 pub ml_cancelled_counts: bool,
4874 #[prost(int32, tag="15")]
4876 pub ml_manual_limit_monthly: i32,
4877 #[prost(int32, tag="16")]
4879 pub ml_manual_retrains_used: i32,
4880 #[prost(bool, tag="17")]
4882 pub ml_needs_retrain: bool,
4883 #[prost(int32, tag="18")]
4885 pub campaigns_since_last_training: i32,
4886 #[prost(int32, tag="19")]
4888 pub total_completed_campaigns: i32,
4889 #[prost(message, optional, tag="20")]
4891 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4892 #[prost(bool, optional, tag="21")]
4897 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
4898 #[prost(bool, tag="22")]
4904 pub provisional_archetypes_enabled: bool,
4905}
4906#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4910pub struct CreateOrganizationRequest {
4911 #[prost(string, tag="1")]
4914 pub name: ::prost::alloc::string::String,
4915 #[prost(enumeration="Industry", tag="2")]
4917 pub industry: i32,
4918 #[prost(enumeration="CompanySize", tag="3")]
4920 pub company_size: i32,
4921 #[prost(string, tag="4")]
4924 pub access_code: ::prost::alloc::string::String,
4925 #[prost(string, tag="5")]
4928 pub data_governance_region: ::prost::alloc::string::String,
4929 #[prost(string, tag="6")]
4932 pub fixture_id: ::prost::alloc::string::String,
4933}
4934#[derive(Clone, PartialEq, ::prost::Message)]
4936pub struct CreateOrganizationResponse {
4937 #[prost(message, optional, tag="1")]
4939 pub organization: ::core::option::Option<Organization>,
4940 #[prost(message, optional, tag="2")]
4942 pub admin_user: ::core::option::Option<User>,
4943}
4944#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4946pub struct GetOrganizationRequest {
4947}
4948#[derive(Clone, PartialEq, ::prost::Message)]
4950pub struct GetOrganizationResponse {
4951 #[prost(message, optional, tag="1")]
4953 pub organization: ::core::option::Option<Organization>,
4954}
4955#[derive(Clone, PartialEq, ::prost::Message)]
4957pub struct UpdateOrganizationRequest {
4958 #[prost(string, tag="1")]
4961 pub name: ::prost::alloc::string::String,
4962 #[prost(message, optional, tag="2")]
4964 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4965 #[prost(enumeration="Industry", tag="3")]
4967 pub industry: i32,
4968 #[prost(enumeration="CompanySize", tag="4")]
4970 pub company_size: i32,
4971 #[prost(string, tag="5")]
4974 pub default_locale: ::prost::alloc::string::String,
4975 #[prost(int32, tag="6")]
4977 pub ml_retrain_cold_threshold: i32,
4978 #[prost(bool, optional, tag="7")]
4981 pub ml_cancelled_counts: ::core::option::Option<bool>,
4982 #[prost(int32, tag="8")]
4985 pub ml_manual_limit_monthly: i32,
4986 #[prost(bool, optional, tag="9")]
4988 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
4989 #[prost(bool, optional, tag="10")]
4993 pub provisional_archetypes_enabled: ::core::option::Option<bool>,
4994}
4995#[derive(Clone, PartialEq, ::prost::Message)]
4997pub struct UpdateOrganizationResponse {
4998 #[prost(message, optional, tag="1")]
5000 pub organization: ::core::option::Option<Organization>,
5001}
5002#[derive(Clone, PartialEq, ::prost::Message)]
5004pub struct UpdateSsoAttributeMappingsRequest {
5005 #[prost(message, repeated, tag="1")]
5007 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
5008}
5009#[derive(Clone, PartialEq, ::prost::Message)]
5011pub struct UpdateSsoAttributeMappingsResponse {
5012 #[prost(message, optional, tag="1")]
5014 pub organization: ::core::option::Option<Organization>,
5015}
5016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5018pub struct RotateAnalyticsSaltRequest {
5019 #[prost(int32, tag="1")]
5021 pub new_bucket_count: i32,
5022}
5023#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5025pub struct RotateAnalyticsSaltResponse {
5026 #[prost(int32, tag="1")]
5028 pub bucket_count: i32,
5029}
5030#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5032pub struct UpdateAnalyticsEpsilonRequest {
5033 #[prost(float, tag="1")]
5035 pub epsilon: f32,
5036}
5037#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5039pub struct UpdateAnalyticsEpsilonResponse {
5040 #[prost(float, tag="1")]
5042 pub epsilon: f32,
5043}
5044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5046pub struct CreateSandboxOrganizationRequest {
5047 #[prost(string, tag="1")]
5050 pub name: ::prost::alloc::string::String,
5051 #[prost(message, optional, tag="2")]
5054 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5055 #[prost(string, tag="3")]
5058 pub data_governance_region: ::prost::alloc::string::String,
5059 #[prost(string, tag="4")]
5063 pub fixture_id: ::prost::alloc::string::String,
5064}
5065#[derive(Clone, PartialEq, ::prost::Message)]
5067pub struct CreateSandboxOrganizationResponse {
5068 #[prost(message, optional, tag="1")]
5070 pub organization: ::core::option::Option<Organization>,
5071 #[prost(message, optional, tag="2")]
5073 pub admin_user: ::core::option::Option<User>,
5074}
5075#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5078pub struct DeleteSandboxOrganizationRequest {
5079 #[prost(string, tag="1")]
5081 pub org_id: ::prost::alloc::string::String,
5082}
5083#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5086pub struct DeleteSandboxOrganizationResponse {
5087 #[prost(string, tag="1")]
5089 pub workflow_id: ::prost::alloc::string::String,
5090}
5091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5093pub struct SandboxFixture {
5094 #[prost(string, tag="1")]
5097 pub id: ::prost::alloc::string::String,
5098 #[prost(string, tag="2")]
5100 pub name: ::prost::alloc::string::String,
5101 #[prost(string, tag="3")]
5103 pub description: ::prost::alloc::string::String,
5104 #[prost(bool, tag="4")]
5107 pub is_default: bool,
5108}
5109#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5112pub struct ListSandboxFixturesRequest {
5113}
5114#[derive(Clone, PartialEq, ::prost::Message)]
5116pub struct ListSandboxFixturesResponse {
5117 #[prost(message, repeated, tag="1")]
5119 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
5120}
5121#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5124pub struct ListUserOrganizationsRequest {
5125}
5126#[derive(Clone, PartialEq, ::prost::Message)]
5128pub struct ListUserOrganizationsResponse {
5129 #[prost(message, repeated, tag="1")]
5132 pub organizations: ::prost::alloc::vec::Vec<Organization>,
5133}
5134#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5139pub struct ListUserSandboxesRequest {
5140}
5141#[derive(Clone, PartialEq, ::prost::Message)]
5143pub struct ListUserSandboxesResponse {
5144 #[prost(message, repeated, tag="1")]
5149 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
5150}
5151#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5155pub struct OrgPrivacyToggle {
5156 #[prost(bool, tag="1")]
5158 pub enabled: bool,
5159 #[prost(string, tag="2")]
5162 pub last_changed_by_email: ::prost::alloc::string::String,
5163 #[prost(message, optional, tag="3")]
5166 pub last_changed_at: ::core::option::Option<::prost_types::Timestamp>,
5167}
5168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5172pub struct OrgPrivacySettings {
5173 #[prost(message, optional, tag="1")]
5175 pub ai_clustering: ::core::option::Option<OrgPrivacyToggle>,
5176 #[prost(message, optional, tag="2")]
5178 pub behavioral_analytics: ::core::option::Option<OrgPrivacyToggle>,
5179 #[prost(message, optional, tag="3")]
5181 pub third_party_channels: ::core::option::Option<OrgPrivacyToggle>,
5182}
5183#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5186pub struct GetOrgPrivacySettingsRequest {
5187}
5188#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5191pub struct GetOrgPrivacySettingsResponse {
5192 #[prost(message, optional, tag="1")]
5194 pub settings: ::core::option::Option<OrgPrivacySettings>,
5195}
5196#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5199pub struct UpdateOrgPrivacySettingsRequest {
5200 #[prost(bool, optional, tag="1")]
5203 pub ai_clustering_enabled: ::core::option::Option<bool>,
5204 #[prost(bool, optional, tag="2")]
5206 pub behavioral_analytics_enabled: ::core::option::Option<bool>,
5207 #[prost(bool, optional, tag="3")]
5210 pub third_party_channels_enabled: ::core::option::Option<bool>,
5211}
5212#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5214pub struct UpdateOrgPrivacySettingsResponse {
5215 #[prost(message, optional, tag="1")]
5218 pub settings: ::core::option::Option<OrgPrivacySettings>,
5219}
5220#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5224#[repr(i32)]
5225pub enum Industry {
5226 Unspecified = 0,
5227 Technology = 1,
5228 Finance = 2,
5229 Healthcare = 3,
5230 Education = 4,
5231 Retail = 5,
5232 Manufacturing = 6,
5233 Media = 7,
5234 Other = 8,
5235}
5236impl Industry {
5237 pub fn as_str_name(&self) -> &'static str {
5242 match self {
5243 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
5244 Self::Technology => "INDUSTRY_TECHNOLOGY",
5245 Self::Finance => "INDUSTRY_FINANCE",
5246 Self::Healthcare => "INDUSTRY_HEALTHCARE",
5247 Self::Education => "INDUSTRY_EDUCATION",
5248 Self::Retail => "INDUSTRY_RETAIL",
5249 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
5250 Self::Media => "INDUSTRY_MEDIA",
5251 Self::Other => "INDUSTRY_OTHER",
5252 }
5253 }
5254 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5256 match value {
5257 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
5258 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
5259 "INDUSTRY_FINANCE" => Some(Self::Finance),
5260 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
5261 "INDUSTRY_EDUCATION" => Some(Self::Education),
5262 "INDUSTRY_RETAIL" => Some(Self::Retail),
5263 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
5264 "INDUSTRY_MEDIA" => Some(Self::Media),
5265 "INDUSTRY_OTHER" => Some(Self::Other),
5266 _ => None,
5267 }
5268 }
5269}
5270#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5272#[repr(i32)]
5273pub enum CompanySize {
5274 Unspecified = 0,
5275 CompanySize1200 = 1,
5276 CompanySize200500 = 2,
5277 CompanySize5001000 = 3,
5278 CompanySize10005000 = 4,
5279 CompanySize5000Plus = 5,
5280}
5281impl CompanySize {
5282 pub fn as_str_name(&self) -> &'static str {
5287 match self {
5288 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
5289 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
5290 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
5291 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
5292 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
5293 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
5294 }
5295 }
5296 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5298 match value {
5299 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
5300 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
5301 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
5302 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
5303 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
5304 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
5305 _ => None,
5306 }
5307 }
5308}
5309#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5311#[repr(i32)]
5312pub enum OrgType {
5313 Unspecified = 0,
5314 Standard = 1,
5315 Sandbox = 2,
5316 Staff = 3,
5319}
5320impl OrgType {
5321 pub fn as_str_name(&self) -> &'static str {
5326 match self {
5327 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
5328 Self::Standard => "ORG_TYPE_STANDARD",
5329 Self::Sandbox => "ORG_TYPE_SANDBOX",
5330 Self::Staff => "ORG_TYPE_STAFF",
5331 }
5332 }
5333 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5335 match value {
5336 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5337 "ORG_TYPE_STANDARD" => Some(Self::Standard),
5338 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
5339 "ORG_TYPE_STAFF" => Some(Self::Staff),
5340 _ => None,
5341 }
5342 }
5343}
5344#[derive(Clone, PartialEq, ::prost::Message)]
5348pub struct UserRenderContext {
5349 #[prost(string, tag="1")]
5351 pub user_id: ::prost::alloc::string::String,
5352 #[prost(map="string, string", tag="2")]
5355 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
5356}
5357#[derive(Clone, PartialEq, ::prost::Message)]
5359pub struct RenderBatchRequest {
5360 #[prost(string, tag="1")]
5362 pub template_id: ::prost::alloc::string::String,
5363 #[prost(int32, tag="2")]
5365 pub version: i32,
5366 #[prost(message, repeated, tag="3")]
5369 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
5370}
5371#[derive(Clone, PartialEq, ::prost::Message)]
5374pub struct RenderBatchResponse {
5375 #[prost(string, tag="1")]
5377 pub user_id: ::prost::alloc::string::String,
5378 #[prost(message, optional, tag="2")]
5380 pub message: ::core::option::Option<Message>,
5381 #[prost(string, tag="3")]
5383 pub error: ::prost::alloc::string::String,
5384}
5385#[derive(Clone, PartialEq, ::prost::Message)]
5390pub struct SessionRecording {
5391 #[prost(string, tag="1")]
5393 pub id: ::prost::alloc::string::String,
5394 #[prost(message, optional, tag="2")]
5396 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
5397 #[prost(message, optional, tag="3")]
5399 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
5400 #[prost(int32, tag="4")]
5402 pub duration_seconds: i32,
5403 #[prost(float, tag="5")]
5405 pub activity_score: f32,
5406}
5407#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5409pub struct ListSessionRecordingsRequest {
5410 #[prost(string, tag="1")]
5413 pub campaign_id: ::prost::alloc::string::String,
5414 #[prost(message, optional, tag="2")]
5416 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
5417 #[prost(message, optional, tag="3")]
5419 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
5420 #[prost(message, optional, tag="4")]
5422 pub pagination: ::core::option::Option<Pagination>,
5423}
5424#[derive(Clone, PartialEq, ::prost::Message)]
5426pub struct ListSessionRecordingsResponse {
5427 #[prost(message, repeated, tag="1")]
5429 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
5430 #[prost(message, optional, tag="2")]
5432 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5433}
5434#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5436pub struct GetSessionSnapshotsRequest {
5437 #[prost(string, tag="1")]
5440 pub recording_id: ::prost::alloc::string::String,
5441}
5442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5444pub struct GetSessionSnapshotsResponse {
5445 #[prost(string, tag="1")]
5448 pub snapshot_data: ::prost::alloc::string::String,
5449}
5450#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5454pub struct ListRolesRequest {
5455}
5456#[derive(Clone, PartialEq, ::prost::Message)]
5458pub struct ListRolesResponse {
5459 #[prost(message, repeated, tag="1")]
5461 pub roles: ::prost::alloc::vec::Vec<Role>,
5462}
5463#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5465pub struct CreateRoleRequest {
5466 #[prost(string, tag="1")]
5469 pub name: ::prost::alloc::string::String,
5470 #[prost(enumeration="Permission", repeated, tag="2")]
5473 pub permissions: ::prost::alloc::vec::Vec<i32>,
5474}
5475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5477pub struct CreateRoleResponse {
5478 #[prost(message, optional, tag="1")]
5480 pub role: ::core::option::Option<Role>,
5481}
5482#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5484pub struct UpdateRoleRequest {
5485 #[prost(string, tag="1")]
5487 pub role_id: ::prost::alloc::string::String,
5488 #[prost(string, tag="2")]
5490 pub name: ::prost::alloc::string::String,
5491 #[prost(enumeration="Permission", repeated, tag="3")]
5495 pub permissions: ::prost::alloc::vec::Vec<i32>,
5496}
5497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5499pub struct UpdateRoleResponse {
5500 #[prost(message, optional, tag="1")]
5502 pub role: ::core::option::Option<Role>,
5503}
5504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5506pub struct DeleteRoleRequest {
5507 #[prost(string, tag="1")]
5509 pub role_id: ::prost::alloc::string::String,
5510}
5511#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5513pub struct DeleteRoleResponse {
5514}
5515#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5521pub struct SamlAttributeNames {
5522 #[prost(string, tag="1")]
5524 pub email: ::prost::alloc::string::String,
5525 #[prost(string, tag="2")]
5527 pub given_name: ::prost::alloc::string::String,
5528 #[prost(string, tag="3")]
5530 pub family_name: ::prost::alloc::string::String,
5531}
5532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5534pub struct SsoProvider {
5535 #[prost(string, tag="1")]
5537 pub id: ::prost::alloc::string::String,
5538 #[prost(string, tag="2")]
5541 pub domain: ::prost::alloc::string::String,
5542 #[prost(enumeration="SsoProviderType", tag="3")]
5544 pub r#type: i32,
5545 #[prost(string, tag="4")]
5548 pub metadata_url: ::prost::alloc::string::String,
5549 #[prost(string, tag="5")]
5552 pub idp_provider_name: ::prost::alloc::string::String,
5553 #[prost(message, optional, tag="6")]
5555 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5556 #[prost(message, optional, tag="7")]
5558 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5559 #[prost(message, optional, tag="8")]
5561 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5562}
5563#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5566pub struct CheckSsoByDomainRequest {
5567 #[prost(string, tag="1")]
5570 pub email: ::prost::alloc::string::String,
5571}
5572#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5574pub struct CheckSsoByDomainResponse {
5575 #[prost(bool, tag="1")]
5577 pub sso_enabled: bool,
5578 #[prost(string, tag="2")]
5581 pub provider_name: ::prost::alloc::string::String,
5582}
5583#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5585pub struct CreateSsoProviderRequest {
5586 #[prost(string, tag="1")]
5589 pub domain: ::prost::alloc::string::String,
5590 #[prost(enumeration="SsoProviderType", tag="2")]
5592 pub r#type: i32,
5593 #[prost(string, tag="3")]
5596 pub metadata_url: ::prost::alloc::string::String,
5597 #[prost(message, optional, tag="4")]
5600 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5601}
5602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5604pub struct CreateSsoProviderResponse {
5605 #[prost(message, optional, tag="1")]
5607 pub provider: ::core::option::Option<SsoProvider>,
5608}
5609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5612pub struct GetSsoProviderRequest {
5613}
5614#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5616pub struct GetSsoProviderResponse {
5617 #[prost(message, optional, tag="1")]
5619 pub provider: ::core::option::Option<SsoProvider>,
5620}
5621#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5623pub struct DeleteSsoProviderRequest {
5624 #[prost(string, tag="1")]
5626 pub provider_id: ::prost::alloc::string::String,
5627}
5628#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5630pub struct DeleteSsoProviderResponse {
5631}
5632#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5636#[repr(i32)]
5637pub enum SsoProviderType {
5638 Unspecified = 0,
5640 Saml = 1,
5642 Oidc = 2,
5644}
5645impl SsoProviderType {
5646 pub fn as_str_name(&self) -> &'static str {
5651 match self {
5652 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
5653 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
5654 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
5655 }
5656 }
5657 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5659 match value {
5660 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5661 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
5662 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
5663 _ => None,
5664 }
5665 }
5666}
5667#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5673pub struct Team {
5674 #[prost(string, tag="1")]
5676 pub id: ::prost::alloc::string::String,
5677 #[prost(string, tag="2")]
5680 pub name: ::prost::alloc::string::String,
5681 #[prost(string, tag="3")]
5684 pub description: ::prost::alloc::string::String,
5685 #[prost(int32, tag="4")]
5687 pub member_count: i32,
5688 #[prost(message, optional, tag="5")]
5690 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5691 #[prost(message, optional, tag="6")]
5693 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5694 #[prost(bool, tag="7")]
5696 pub is_default: bool,
5697 #[prost(string, tag="8")]
5699 pub created_by: ::prost::alloc::string::String,
5700}
5701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5703pub struct CreateTeamRequest {
5704 #[prost(string, tag="1")]
5707 pub name: ::prost::alloc::string::String,
5708 #[prost(string, tag="2")]
5711 pub description: ::prost::alloc::string::String,
5712}
5713#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5715pub struct CreateTeamResponse {
5716 #[prost(message, optional, tag="1")]
5718 pub team: ::core::option::Option<Team>,
5719}
5720#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5722pub struct GetTeamRequest {
5723 #[prost(string, tag="1")]
5725 pub team_id: ::prost::alloc::string::String,
5726}
5727#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5729pub struct GetTeamResponse {
5730 #[prost(message, optional, tag="1")]
5732 pub team: ::core::option::Option<Team>,
5733}
5734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5736pub struct ListTeamsRequest {
5737 #[prost(message, optional, tag="1")]
5739 pub pagination: ::core::option::Option<Pagination>,
5740}
5741#[derive(Clone, PartialEq, ::prost::Message)]
5743pub struct ListTeamsResponse {
5744 #[prost(message, repeated, tag="1")]
5746 pub teams: ::prost::alloc::vec::Vec<Team>,
5747 #[prost(message, optional, tag="2")]
5749 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5750}
5751#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5753pub struct UpdateTeamRequest {
5754 #[prost(string, tag="1")]
5756 pub team_id: ::prost::alloc::string::String,
5757 #[prost(string, tag="2")]
5761 pub name: ::prost::alloc::string::String,
5762 #[prost(string, tag="3")]
5765 pub description: ::prost::alloc::string::String,
5766}
5767#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5769pub struct UpdateTeamResponse {
5770 #[prost(message, optional, tag="1")]
5772 pub team: ::core::option::Option<Team>,
5773}
5774#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5776pub struct DeleteTeamRequest {
5777 #[prost(string, tag="1")]
5780 pub team_id: ::prost::alloc::string::String,
5781}
5782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5784pub struct DeleteTeamResponse {
5785}
5786#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5788pub struct AddTeamMembersRequest {
5789 #[prost(string, tag="1")]
5791 pub team_id: ::prost::alloc::string::String,
5792 #[prost(string, repeated, tag="2")]
5796 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5797}
5798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5800pub struct AddTeamMembersResponse {
5801 #[prost(message, optional, tag="1")]
5803 pub team: ::core::option::Option<Team>,
5804}
5805#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5807pub struct RemoveTeamMembersRequest {
5808 #[prost(string, tag="1")]
5810 pub team_id: ::prost::alloc::string::String,
5811 #[prost(string, repeated, tag="2")]
5814 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5815}
5816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5818pub struct RemoveTeamMembersResponse {
5819 #[prost(message, optional, tag="1")]
5821 pub team: ::core::option::Option<Team>,
5822}
5823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5825pub struct ListTeamMembersRequest {
5826 #[prost(string, tag="1")]
5828 pub team_id: ::prost::alloc::string::String,
5829 #[prost(message, optional, tag="2")]
5831 pub pagination: ::core::option::Option<Pagination>,
5832}
5833#[derive(Clone, PartialEq, ::prost::Message)]
5835pub struct ListTeamMembersResponse {
5836 #[prost(message, repeated, tag="1")]
5838 pub users: ::prost::alloc::vec::Vec<User>,
5839 #[prost(message, optional, tag="2")]
5841 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5842}
5843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5847pub struct TemplateVariable {
5848 #[prost(string, tag="1")]
5851 pub name: ::prost::alloc::string::String,
5852 #[prost(string, tag="2")]
5855 pub description: ::prost::alloc::string::String,
5856 #[prost(bool, tag="3")]
5858 pub required: bool,
5859 #[prost(enumeration="TemplateVariableSource", tag="4")]
5861 pub source: i32,
5862 #[prost(string, tag="5")]
5865 pub default_value: ::prost::alloc::string::String,
5866 #[prost(bool, tag="6")]
5869 pub pii: bool,
5870}
5871#[derive(Clone, PartialEq, ::prost::Message)]
5874pub struct Template {
5875 #[prost(string, tag="1")]
5877 pub id: ::prost::alloc::string::String,
5878 #[prost(string, tag="2")]
5881 pub name: ::prost::alloc::string::String,
5882 #[prost(string, tag="3")]
5885 pub body: ::prost::alloc::string::String,
5886 #[prost(message, repeated, tag="4")]
5888 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5889 #[prost(int32, tag="5")]
5891 pub version: i32,
5892 #[prost(message, optional, tag="6")]
5894 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5895 #[prost(message, optional, tag="7")]
5897 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5898 #[prost(string, tag="8")]
5902 pub title: ::prost::alloc::string::String,
5903 #[prost(enumeration="TemplateType", tag="9")]
5906 pub r#type: i32,
5907 #[prost(string, tag="10")]
5911 pub source_locale: ::prost::alloc::string::String,
5912}
5913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5916pub struct TemplateTranslation {
5917 #[prost(string, tag="1")]
5919 pub id: ::prost::alloc::string::String,
5920 #[prost(string, tag="2")]
5922 pub template_id: ::prost::alloc::string::String,
5923 #[prost(int32, tag="3")]
5925 pub version: i32,
5926 #[prost(string, tag="4")]
5928 pub locale: ::prost::alloc::string::String,
5929 #[prost(string, tag="5")]
5932 pub title: ::prost::alloc::string::String,
5933 #[prost(string, tag="6")]
5936 pub body: ::prost::alloc::string::String,
5937 #[prost(enumeration="TranslationStatus", tag="7")]
5939 pub status: i32,
5940 #[prost(string, tag="8")]
5942 pub translated_by: ::prost::alloc::string::String,
5943 #[prost(string, tag="9")]
5945 pub reviewed_by: ::prost::alloc::string::String,
5946 #[prost(message, optional, tag="10")]
5948 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5949 #[prost(message, optional, tag="11")]
5951 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5952}
5953#[derive(Clone, PartialEq, ::prost::Message)]
5955pub struct CreateTemplateRequest {
5956 #[prost(string, tag="1")]
5959 pub name: ::prost::alloc::string::String,
5960 #[prost(string, tag="2")]
5963 pub body: ::prost::alloc::string::String,
5964 #[prost(message, repeated, tag="3")]
5966 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5967 #[prost(string, tag="4")]
5970 pub title: ::prost::alloc::string::String,
5971 #[prost(enumeration="TemplateType", tag="5")]
5973 pub r#type: i32,
5974 #[prost(string, tag="6")]
5977 pub source_locale: ::prost::alloc::string::String,
5978}
5979#[derive(Clone, PartialEq, ::prost::Message)]
5981pub struct CreateTemplateResponse {
5982 #[prost(message, optional, tag="1")]
5984 pub template: ::core::option::Option<Template>,
5985}
5986#[derive(Clone, PartialEq, ::prost::Message)]
5988pub struct UpdateTemplateRequest {
5989 #[prost(string, tag="1")]
5991 pub template_id: ::prost::alloc::string::String,
5992 #[prost(string, tag="2")]
5995 pub body: ::prost::alloc::string::String,
5996 #[prost(message, repeated, tag="3")]
5998 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5999}
6000#[derive(Clone, PartialEq, ::prost::Message)]
6002pub struct UpdateTemplateResponse {
6003 #[prost(message, optional, tag="1")]
6005 pub template: ::core::option::Option<Template>,
6006}
6007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6009pub struct GetTemplateRequest {
6010 #[prost(string, tag="1")]
6012 pub template_id: ::prost::alloc::string::String,
6013 #[prost(int32, tag="2")]
6015 pub version: i32,
6016}
6017#[derive(Clone, PartialEq, ::prost::Message)]
6019pub struct GetTemplateResponse {
6020 #[prost(message, optional, tag="1")]
6022 pub template: ::core::option::Option<Template>,
6023}
6024#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6026pub struct ListTemplatesRequest {
6027 #[prost(message, optional, tag="1")]
6029 pub pagination: ::core::option::Option<Pagination>,
6030 #[prost(enumeration="TemplateType", tag="2")]
6032 pub r#type: i32,
6033}
6034#[derive(Clone, PartialEq, ::prost::Message)]
6036pub struct ListTemplatesResponse {
6037 #[prost(message, repeated, tag="1")]
6039 pub templates: ::prost::alloc::vec::Vec<Template>,
6040 #[prost(message, optional, tag="2")]
6042 pub pagination_meta: ::core::option::Option<PaginationMeta>,
6043}
6044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6046pub struct CreateTemplateTranslationRequest {
6047 #[prost(string, tag="1")]
6049 pub template_id: ::prost::alloc::string::String,
6050 #[prost(int32, tag="2")]
6052 pub version: i32,
6053 #[prost(string, tag="3")]
6055 pub locale: ::prost::alloc::string::String,
6056 #[prost(string, tag="4")]
6058 pub title: ::prost::alloc::string::String,
6059 #[prost(string, tag="5")]
6061 pub body: ::prost::alloc::string::String,
6062 #[prost(string, tag="6")]
6064 pub translated_by: ::prost::alloc::string::String,
6065 #[prost(enumeration="TranslationStatus", tag="7")]
6067 pub status: i32,
6068}
6069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6071pub struct CreateTemplateTranslationResponse {
6072 #[prost(message, optional, tag="1")]
6074 pub translation: ::core::option::Option<TemplateTranslation>,
6075}
6076#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6078pub struct UpdateTemplateTranslationRequest {
6079 #[prost(string, tag="1")]
6081 pub translation_id: ::prost::alloc::string::String,
6082 #[prost(string, tag="2")]
6084 pub title: ::prost::alloc::string::String,
6085 #[prost(string, tag="3")]
6087 pub body: ::prost::alloc::string::String,
6088 #[prost(enumeration="TranslationStatus", tag="4")]
6090 pub status: i32,
6091}
6092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6094pub struct UpdateTemplateTranslationResponse {
6095 #[prost(message, optional, tag="1")]
6097 pub translation: ::core::option::Option<TemplateTranslation>,
6098}
6099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6101pub struct ListTemplateTranslationsRequest {
6102 #[prost(string, tag="1")]
6104 pub template_id: ::prost::alloc::string::String,
6105 #[prost(int32, tag="2")]
6107 pub version: i32,
6108}
6109#[derive(Clone, PartialEq, ::prost::Message)]
6111pub struct ListTemplateTranslationsResponse {
6112 #[prost(message, repeated, tag="1")]
6114 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
6115}
6116#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6118pub struct ApproveTemplateTranslationRequest {
6119 #[prost(string, tag="1")]
6121 pub translation_id: ::prost::alloc::string::String,
6122}
6123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6125pub struct ApproveTemplateTranslationResponse {
6126 #[prost(message, optional, tag="1")]
6128 pub translation: ::core::option::Option<TemplateTranslation>,
6129}
6130#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6134#[repr(i32)]
6135pub enum TemplateType {
6136 Unspecified = 0,
6138 Markdown = 1,
6140 Rich = 2,
6142 Html = 3,
6144}
6145impl TemplateType {
6146 pub fn as_str_name(&self) -> &'static str {
6151 match self {
6152 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
6153 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
6154 Self::Rich => "TEMPLATE_TYPE_RICH",
6155 Self::Html => "TEMPLATE_TYPE_HTML",
6156 }
6157 }
6158 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6160 match value {
6161 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6162 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
6163 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
6164 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
6165 _ => None,
6166 }
6167 }
6168}
6169#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6171#[repr(i32)]
6172pub enum TemplateVariableSource {
6173 Unspecified = 0,
6175 Profile = 1,
6177 Custom = 2,
6179}
6180impl TemplateVariableSource {
6181 pub fn as_str_name(&self) -> &'static str {
6186 match self {
6187 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
6188 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
6189 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
6190 }
6191 }
6192 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6194 match value {
6195 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
6196 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
6197 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
6198 _ => None,
6199 }
6200 }
6201}
6202#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6204#[repr(i32)]
6205pub enum TranslationStatus {
6206 Unspecified = 0,
6207 Draft = 1,
6209 AiTranslated = 2,
6211 InReview = 3,
6213 Approved = 4,
6215}
6216impl TranslationStatus {
6217 pub fn as_str_name(&self) -> &'static str {
6222 match self {
6223 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
6224 Self::Draft => "TRANSLATION_STATUS_DRAFT",
6225 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
6226 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
6227 Self::Approved => "TRANSLATION_STATUS_APPROVED",
6228 }
6229 }
6230 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6232 match value {
6233 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
6234 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
6235 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
6236 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
6237 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
6238 _ => None,
6239 }
6240 }
6241}
6242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6247pub struct DeeplinkTokenPayload {
6248 #[prost(string, tag="1")]
6251 pub campaign_id: ::prost::alloc::string::String,
6252 #[prost(string, tag="2")]
6258 pub recipient_user_id: ::prost::alloc::string::String,
6259 #[prost(enumeration="ChannelStepKind", tag="3")]
6263 pub step_kind: i32,
6264 #[prost(message, optional, tag="4")]
6267 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
6268}
6269#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6270pub struct SignDeeplinkTokenRequest {
6271 #[prost(string, tag="1")]
6274 pub campaign_id: ::prost::alloc::string::String,
6275 #[prost(string, tag="2")]
6278 pub recipient_user_id: ::prost::alloc::string::String,
6279 #[prost(enumeration="ChannelStepKind", tag="3")]
6281 pub step_kind: i32,
6282 #[prost(int64, tag="4")]
6287 pub ttl_seconds: i64,
6288}
6289#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6290pub struct SignDeeplinkTokenResponse {
6291 #[prost(string, tag="1")]
6297 pub token: ::prost::alloc::string::String,
6298 #[prost(message, optional, tag="2")]
6301 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
6302 #[prost(int32, tag="3")]
6306 pub key_version: i32,
6307}
6308#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6309pub struct ValidateDeeplinkTokenRequest {
6310 #[prost(string, tag="1")]
6313 pub token: ::prost::alloc::string::String,
6314 #[prost(string, tag="2")]
6321 pub campaign_id: ::prost::alloc::string::String,
6322}
6323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6324pub struct ValidateDeeplinkTokenResponse {
6325 #[prost(bool, tag="1")]
6328 pub valid: bool,
6329 #[prost(enumeration="ValidationFailureReason", tag="2")]
6333 pub failure_reason: i32,
6334 #[prost(message, optional, tag="3")]
6338 pub payload: ::core::option::Option<DeeplinkTokenPayload>,
6339}
6340#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6344#[repr(i32)]
6345pub enum ValidationFailureReason {
6346 Unspecified = 0,
6347 InvalidSignature = 1,
6350 Expired = 2,
6352 KeyRetired = 3,
6358 Malformed = 4,
6362}
6363impl ValidationFailureReason {
6364 pub fn as_str_name(&self) -> &'static str {
6369 match self {
6370 Self::Unspecified => "VALIDATION_FAILURE_REASON_UNSPECIFIED",
6371 Self::InvalidSignature => "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE",
6372 Self::Expired => "VALIDATION_FAILURE_REASON_EXPIRED",
6373 Self::KeyRetired => "VALIDATION_FAILURE_REASON_KEY_RETIRED",
6374 Self::Malformed => "VALIDATION_FAILURE_REASON_MALFORMED",
6375 }
6376 }
6377 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6379 match value {
6380 "VALIDATION_FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
6381 "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE" => Some(Self::InvalidSignature),
6382 "VALIDATION_FAILURE_REASON_EXPIRED" => Some(Self::Expired),
6383 "VALIDATION_FAILURE_REASON_KEY_RETIRED" => Some(Self::KeyRetired),
6384 "VALIDATION_FAILURE_REASON_MALFORMED" => Some(Self::Malformed),
6385 _ => None,
6386 }
6387 }
6388}
6389include!("pidgr.v1.tonic.rs");
6390