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}
119impl ChannelName {
120 pub fn as_str_name(&self) -> &'static str {
125 match self {
126 Self::Unspecified => "CHANNEL_NAME_UNSPECIFIED",
127 Self::Email => "CHANNEL_NAME_EMAIL",
128 Self::Webhook => "CHANNEL_NAME_WEBHOOK",
129 Self::Telegram => "CHANNEL_NAME_TELEGRAM",
130 Self::Slack => "CHANNEL_NAME_SLACK",
131 Self::Sms => "CHANNEL_NAME_SMS",
132 Self::Whatsapp => "CHANNEL_NAME_WHATSAPP",
133 Self::MicrosoftTeams => "CHANNEL_NAME_MICROSOFT_TEAMS",
134 Self::Line => "CHANNEL_NAME_LINE",
135 }
136 }
137 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
139 match value {
140 "CHANNEL_NAME_UNSPECIFIED" => Some(Self::Unspecified),
141 "CHANNEL_NAME_EMAIL" => Some(Self::Email),
142 "CHANNEL_NAME_WEBHOOK" => Some(Self::Webhook),
143 "CHANNEL_NAME_TELEGRAM" => Some(Self::Telegram),
144 "CHANNEL_NAME_SLACK" => Some(Self::Slack),
145 "CHANNEL_NAME_SMS" => Some(Self::Sms),
146 "CHANNEL_NAME_WHATSAPP" => Some(Self::Whatsapp),
147 "CHANNEL_NAME_MICROSOFT_TEAMS" => Some(Self::MicrosoftTeams),
148 "CHANNEL_NAME_LINE" => Some(Self::Line),
149 _ => None,
150 }
151 }
152}
153#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
157#[repr(i32)]
158pub enum ChannelStepKind {
159 Unspecified = 0,
160 Reminder = 1,
161 Escalation = 2,
162}
163impl ChannelStepKind {
164 pub fn as_str_name(&self) -> &'static str {
169 match self {
170 Self::Unspecified => "CHANNEL_STEP_KIND_UNSPECIFIED",
171 Self::Reminder => "CHANNEL_STEP_KIND_REMINDER",
172 Self::Escalation => "CHANNEL_STEP_KIND_ESCALATION",
173 }
174 }
175 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
177 match value {
178 "CHANNEL_STEP_KIND_UNSPECIFIED" => Some(Self::Unspecified),
179 "CHANNEL_STEP_KIND_REMINDER" => Some(Self::Reminder),
180 "CHANNEL_STEP_KIND_ESCALATION" => Some(Self::Escalation),
181 _ => None,
182 }
183 }
184}
185#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
189#[repr(i32)]
190pub enum ChannelEventStatus {
191 Unspecified = 0,
192 Sent = 1,
193 Delivered = 2,
194 Opened = 3,
195 Clicked = 4,
196 Bounced = 5,
197 Failed = 6,
198 Skipped = 7,
199}
200impl ChannelEventStatus {
201 pub fn as_str_name(&self) -> &'static str {
206 match self {
207 Self::Unspecified => "CHANNEL_EVENT_STATUS_UNSPECIFIED",
208 Self::Sent => "CHANNEL_EVENT_STATUS_SENT",
209 Self::Delivered => "CHANNEL_EVENT_STATUS_DELIVERED",
210 Self::Opened => "CHANNEL_EVENT_STATUS_OPENED",
211 Self::Clicked => "CHANNEL_EVENT_STATUS_CLICKED",
212 Self::Bounced => "CHANNEL_EVENT_STATUS_BOUNCED",
213 Self::Failed => "CHANNEL_EVENT_STATUS_FAILED",
214 Self::Skipped => "CHANNEL_EVENT_STATUS_SKIPPED",
215 }
216 }
217 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
219 match value {
220 "CHANNEL_EVENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
221 "CHANNEL_EVENT_STATUS_SENT" => Some(Self::Sent),
222 "CHANNEL_EVENT_STATUS_DELIVERED" => Some(Self::Delivered),
223 "CHANNEL_EVENT_STATUS_OPENED" => Some(Self::Opened),
224 "CHANNEL_EVENT_STATUS_CLICKED" => Some(Self::Clicked),
225 "CHANNEL_EVENT_STATUS_BOUNCED" => Some(Self::Bounced),
226 "CHANNEL_EVENT_STATUS_FAILED" => Some(Self::Failed),
227 "CHANNEL_EVENT_STATUS_SKIPPED" => Some(Self::Skipped),
228 _ => None,
229 }
230 }
231}
232#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
235#[repr(i32)]
236pub enum ChannelSkipReason {
237 Unspecified = 0,
238 OptedOut = 1,
239 RegionBlocked = 2,
240 CostCapExceeded = 3,
241 NoIdentifier = 4,
242}
243impl ChannelSkipReason {
244 pub fn as_str_name(&self) -> &'static str {
249 match self {
250 Self::Unspecified => "CHANNEL_SKIP_REASON_UNSPECIFIED",
251 Self::OptedOut => "CHANNEL_SKIP_REASON_OPTED_OUT",
252 Self::RegionBlocked => "CHANNEL_SKIP_REASON_REGION_BLOCKED",
253 Self::CostCapExceeded => "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED",
254 Self::NoIdentifier => "CHANNEL_SKIP_REASON_NO_IDENTIFIER",
255 }
256 }
257 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
259 match value {
260 "CHANNEL_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
261 "CHANNEL_SKIP_REASON_OPTED_OUT" => Some(Self::OptedOut),
262 "CHANNEL_SKIP_REASON_REGION_BLOCKED" => Some(Self::RegionBlocked),
263 "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED" => Some(Self::CostCapExceeded),
264 "CHANNEL_SKIP_REASON_NO_IDENTIFIER" => Some(Self::NoIdentifier),
265 _ => None,
266 }
267 }
268}
269#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
271pub struct Role {
272 #[prost(string, tag="1")]
274 pub id: ::prost::alloc::string::String,
275 #[prost(string, tag="2")]
277 pub slug: ::prost::alloc::string::String,
278 #[prost(string, tag="3")]
280 pub name: ::prost::alloc::string::String,
281 #[prost(bool, tag="4")]
283 pub is_default: bool,
284 #[prost(enumeration="Permission", repeated, tag="5")]
286 pub permissions: ::prost::alloc::vec::Vec<i32>,
287 #[prost(bool, tag="6")]
289 pub is_system: bool,
290}
291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
295pub struct Pagination {
296 #[prost(int32, tag="1")]
298 pub page_size: i32,
299 #[prost(string, tag="2")]
301 pub page_token: ::prost::alloc::string::String,
302}
303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
305pub struct PaginationMeta {
306 #[prost(string, tag="1")]
308 pub next_page_token: ::prost::alloc::string::String,
309 #[prost(int32, tag="2")]
311 pub total_count: i32,
312}
313#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
317pub struct MessageAction {
318 #[prost(string, tag="1")]
320 pub id: ::prost::alloc::string::String,
321 #[prost(enumeration="ActionType", tag="2")]
323 pub r#type: i32,
324 #[prost(string, tag="3")]
327 pub label: ::prost::alloc::string::String,
328}
329#[derive(Clone, PartialEq, ::prost::Message)]
332pub struct Message {
333 #[prost(string, tag="1")]
335 pub content_id: ::prost::alloc::string::String,
336 #[prost(string, tag="2")]
338 pub campaign_id: ::prost::alloc::string::String,
339 #[prost(string, tag="3")]
342 pub sender_name: ::prost::alloc::string::String,
343 #[prost(string, tag="4")]
346 pub summary: ::prost::alloc::string::String,
347 #[prost(string, tag="5")]
350 pub preview: ::prost::alloc::string::String,
351 #[prost(string, tag="6")]
354 pub body: ::prost::alloc::string::String,
355 #[prost(bool, tag="7")]
357 pub critical: bool,
358 #[prost(message, repeated, tag="8")]
360 pub actions: ::prost::alloc::vec::Vec<MessageAction>,
361 #[prost(message, optional, tag="9")]
363 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
364 #[prost(string, tag="10")]
367 pub title: ::prost::alloc::string::String,
368}
369#[derive(Clone, PartialEq, ::prost::Message)]
375pub struct WorkflowDefinition {
376 #[prost(message, repeated, tag="1")]
379 pub steps: ::prost::alloc::vec::Vec<WorkflowStep>,
380}
381#[derive(Clone, PartialEq, ::prost::Message)]
383pub struct WorkflowStep {
384 #[prost(string, tag="1")]
386 pub id: ::prost::alloc::string::String,
387 #[prost(enumeration="StepType", tag="2")]
389 pub r#type: i32,
390 #[prost(map="string, string", tag="7")]
393 pub transitions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
394 #[prost(oneof="workflow_step::Config", tags="3, 4, 5, 6, 8")]
396 pub config: ::core::option::Option<workflow_step::Config>,
397}
398pub mod workflow_step {
400 #[derive(Clone, PartialEq, ::prost::Oneof)]
402 pub enum Config {
403 #[prost(message, tag="3")]
405 SendNotification(super::SendNotificationConfig),
406 #[prost(message, tag="4")]
408 DeadlineCheck(super::DeadlineCheckConfig),
409 #[prost(message, tag="5")]
411 SendReminder(super::SendReminderConfig),
412 #[prost(message, tag="6")]
414 CallWebhook(super::CallWebhookConfig),
415 #[prost(message, tag="8")]
417 EscalateConfig(super::EscalateConfig),
418 }
419}
420#[derive(Clone, PartialEq, ::prost::Message)]
422pub struct SendNotificationConfig {
423 #[prost(string, tag="1")]
426 pub r#type: ::prost::alloc::string::String,
427 #[prost(string, tag="2")]
431 pub template_id: ::prost::alloc::string::String,
432 #[prost(int32, tag="3")]
435 pub template_version: i32,
436 #[prost(string, tag="4")]
439 pub action_label: ::prost::alloc::string::String,
440 #[prost(enumeration="ActionType", tag="5")]
442 pub action_type: i32,
443 #[prost(map="string, string", tag="6")]
446 pub custom_variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
447}
448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
452pub struct DeadlineCheckConfig {
453 #[prost(string, tag="1")]
456 pub delay: ::prost::alloc::string::String,
457}
458#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct SendReminderConfig {
461 #[prost(string, tag="1")]
464 pub r#type: ::prost::alloc::string::String,
465 #[prost(enumeration="ChannelName", repeated, tag="4")]
472 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
473 #[prost(message, repeated, tag="5")]
486 pub notify_targets: ::prost::alloc::vec::Vec<EscalationTarget>,
487}
488#[derive(Clone, PartialEq, ::prost::Message)]
490pub struct CallWebhookConfig {
491 #[prost(string, tag="1")]
494 pub name: ::prost::alloc::string::String,
495 #[prost(string, tag="2")]
500 pub url: ::prost::alloc::string::String,
501 #[prost(map="string, string", tag="3")]
504 pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
505}
506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
508pub struct EscalationTarget {
509 #[prost(enumeration="EscalationTargetType", tag="1")]
511 pub r#type: i32,
512 #[prost(string, tag="2")]
515 pub target_id: ::prost::alloc::string::String,
516}
517#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct EscalateConfig {
520 #[prost(enumeration="EscalationCondition", tag="1")]
522 pub condition: i32,
523 #[prost(message, repeated, tag="2")]
525 pub targets: ::prost::alloc::vec::Vec<EscalationTarget>,
526 #[prost(int32, tag="3")]
529 pub repeat_count: i32,
530 #[prost(int32, tag="4")]
532 pub repeat_interval_minutes: i32,
533 #[prost(enumeration="EscalateMode", tag="5")]
535 pub mode: i32,
536 #[prost(enumeration="ChannelName", repeated, tag="6")]
544 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
545}
546#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
550#[repr(i32)]
551pub enum CampaignStatus {
552 Unspecified = 0,
554 Created = 1,
556 Running = 2,
558 Completed = 3,
560 Failed = 4,
562 Cancelled = 5,
564}
565impl CampaignStatus {
566 pub fn as_str_name(&self) -> &'static str {
571 match self {
572 Self::Unspecified => "CAMPAIGN_STATUS_UNSPECIFIED",
573 Self::Created => "CAMPAIGN_STATUS_CREATED",
574 Self::Running => "CAMPAIGN_STATUS_RUNNING",
575 Self::Completed => "CAMPAIGN_STATUS_COMPLETED",
576 Self::Failed => "CAMPAIGN_STATUS_FAILED",
577 Self::Cancelled => "CAMPAIGN_STATUS_CANCELLED",
578 }
579 }
580 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
582 match value {
583 "CAMPAIGN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
584 "CAMPAIGN_STATUS_CREATED" => Some(Self::Created),
585 "CAMPAIGN_STATUS_RUNNING" => Some(Self::Running),
586 "CAMPAIGN_STATUS_COMPLETED" => Some(Self::Completed),
587 "CAMPAIGN_STATUS_FAILED" => Some(Self::Failed),
588 "CAMPAIGN_STATUS_CANCELLED" => Some(Self::Cancelled),
589 _ => None,
590 }
591 }
592}
593#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
595#[repr(i32)]
596pub enum DeliveryStatus {
597 Unspecified = 0,
599 Pending = 1,
601 Sent = 2,
603 Delivered = 3,
605 Acknowledged = 4,
607 Missed = 5,
609 NoDevice = 6,
611 Failed = 7,
613}
614impl DeliveryStatus {
615 pub fn as_str_name(&self) -> &'static str {
620 match self {
621 Self::Unspecified => "DELIVERY_STATUS_UNSPECIFIED",
622 Self::Pending => "DELIVERY_STATUS_PENDING",
623 Self::Sent => "DELIVERY_STATUS_SENT",
624 Self::Delivered => "DELIVERY_STATUS_DELIVERED",
625 Self::Acknowledged => "DELIVERY_STATUS_ACKNOWLEDGED",
626 Self::Missed => "DELIVERY_STATUS_MISSED",
627 Self::NoDevice => "DELIVERY_STATUS_NO_DEVICE",
628 Self::Failed => "DELIVERY_STATUS_FAILED",
629 }
630 }
631 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
633 match value {
634 "DELIVERY_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
635 "DELIVERY_STATUS_PENDING" => Some(Self::Pending),
636 "DELIVERY_STATUS_SENT" => Some(Self::Sent),
637 "DELIVERY_STATUS_DELIVERED" => Some(Self::Delivered),
638 "DELIVERY_STATUS_ACKNOWLEDGED" => Some(Self::Acknowledged),
639 "DELIVERY_STATUS_MISSED" => Some(Self::Missed),
640 "DELIVERY_STATUS_NO_DEVICE" => Some(Self::NoDevice),
641 "DELIVERY_STATUS_FAILED" => Some(Self::Failed),
642 _ => None,
643 }
644 }
645}
646#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
648#[repr(i32)]
649pub enum Platform {
650 Unspecified = 0,
652 Ios = 1,
654 Android = 2,
656}
657impl Platform {
658 pub fn as_str_name(&self) -> &'static str {
663 match self {
664 Self::Unspecified => "PLATFORM_UNSPECIFIED",
665 Self::Ios => "PLATFORM_IOS",
666 Self::Android => "PLATFORM_ANDROID",
667 }
668 }
669 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
671 match value {
672 "PLATFORM_UNSPECIFIED" => Some(Self::Unspecified),
673 "PLATFORM_IOS" => Some(Self::Ios),
674 "PLATFORM_ANDROID" => Some(Self::Android),
675 _ => None,
676 }
677 }
678}
679#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
684#[repr(i32)]
685pub enum Permission {
686 Unspecified = 0,
688 OrgRead = 1,
690 OrgWrite = 2,
692 MembersRead = 3,
694 MembersInvite = 4,
696 MembersManage = 5,
698 CampaignsRead = 6,
700 CampaignsWrite = 7,
702 CampaignsStart = 8,
704 TemplatesRead = 9,
706 TemplatesWrite = 10,
708 InboxRead = 11,
710 InboxAct = 12,
712 GroupsAllRead = 13,
714 GroupsWrite = 14,
716 GroupsAllWrite = 15,
718 TeamsAllRead = 16,
720 TeamsWrite = 17,
722 TeamsAllWrite = 18,
724 PrivacyRead = 19,
726 PrivacyWrite = 20,
728 AuditRead = 21,
730 TemplatesReview = 22,
732 PlatformSupport = 23,
735 PlatformAccessCodes = 24,
738 PlatformProvision = 25,
741 PlatformAbuseResponse = 26,
744 PlatformComplianceWrite = 27,
747}
748impl Permission {
749 pub fn as_str_name(&self) -> &'static str {
754 match self {
755 Self::Unspecified => "PERMISSION_UNSPECIFIED",
756 Self::OrgRead => "PERMISSION_ORG_READ",
757 Self::OrgWrite => "PERMISSION_ORG_WRITE",
758 Self::MembersRead => "PERMISSION_MEMBERS_READ",
759 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
760 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
761 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
762 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
763 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
764 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
765 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
766 Self::InboxRead => "PERMISSION_INBOX_READ",
767 Self::InboxAct => "PERMISSION_INBOX_ACT",
768 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
769 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
770 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
771 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
772 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
773 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
774 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
775 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
776 Self::AuditRead => "PERMISSION_AUDIT_READ",
777 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
778 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
779 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
780 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
781 Self::PlatformAbuseResponse => "PERMISSION_PLATFORM_ABUSE_RESPONSE",
782 Self::PlatformComplianceWrite => "PERMISSION_PLATFORM_COMPLIANCE_WRITE",
783 }
784 }
785 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
787 match value {
788 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
789 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
790 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
791 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
792 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
793 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
794 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
795 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
796 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
797 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
798 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
799 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
800 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
801 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
802 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
803 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
804 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
805 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
806 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
807 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
808 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
809 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
810 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
811 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
812 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
813 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
814 "PERMISSION_PLATFORM_ABUSE_RESPONSE" => Some(Self::PlatformAbuseResponse),
815 "PERMISSION_PLATFORM_COMPLIANCE_WRITE" => Some(Self::PlatformComplianceWrite),
816 _ => None,
817 }
818 }
819}
820#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
822#[repr(i32)]
823pub enum ActionType {
824 Unspecified = 0,
826 Ack = 1,
828}
829impl ActionType {
830 pub fn as_str_name(&self) -> &'static str {
835 match self {
836 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
837 Self::Ack => "ACTION_TYPE_ACK",
838 }
839 }
840 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
842 match value {
843 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
844 "ACTION_TYPE_ACK" => Some(Self::Ack),
845 _ => None,
846 }
847 }
848}
849#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
851#[repr(i32)]
852pub enum StepType {
853 Unspecified = 0,
855 SendNotification = 1,
857 DeadlineCheck = 2,
859 SendReminder = 3,
861 CallWebhook = 4,
863 MarkMissed = 5,
865 Escalate = 6,
867}
868impl StepType {
869 pub fn as_str_name(&self) -> &'static str {
874 match self {
875 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
876 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
877 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
878 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
879 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
880 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
881 Self::Escalate => "STEP_TYPE_ESCALATE",
882 }
883 }
884 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
886 match value {
887 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
888 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
889 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
890 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
891 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
892 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
893 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
894 _ => None,
895 }
896 }
897}
898#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
900#[repr(i32)]
901pub enum EscalationCondition {
902 Unspecified = 0,
903 IfNotAcked = 1,
905 IfNotClosed = 2,
907}
908impl EscalationCondition {
909 pub fn as_str_name(&self) -> &'static str {
914 match self {
915 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
916 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
917 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
918 }
919 }
920 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
922 match value {
923 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
924 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
925 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
926 _ => None,
927 }
928 }
929}
930#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
932#[repr(i32)]
933pub enum EscalationTargetType {
934 Unspecified = 0,
935 User = 1,
937 Group = 2,
939 Manager = 3,
941 Role = 4,
943}
944impl EscalationTargetType {
945 pub fn as_str_name(&self) -> &'static str {
950 match self {
951 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
952 Self::User => "ESCALATION_TARGET_TYPE_USER",
953 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
954 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
955 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
956 }
957 }
958 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
960 match value {
961 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
962 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
963 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
964 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
965 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
966 _ => None,
967 }
968 }
969}
970#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
972#[repr(i32)]
973pub enum EscalateMode {
974 Unspecified = 0,
976 Deliver = 1,
978 AlertOnly = 2,
980}
981impl EscalateMode {
982 pub fn as_str_name(&self) -> &'static str {
987 match self {
988 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
989 Self::Deliver => "ESCALATE_MODE_DELIVER",
990 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
991 }
992 }
993 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
995 match value {
996 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
997 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
998 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
999 _ => None,
1000 }
1001 }
1002}
1003#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1007pub struct ApiKey {
1008 #[prost(string, tag="1")]
1010 pub id: ::prost::alloc::string::String,
1011 #[prost(string, tag="2")]
1013 pub name: ::prost::alloc::string::String,
1014 #[prost(string, tag="3")]
1017 pub key_prefix: ::prost::alloc::string::String,
1018 #[prost(enumeration="Permission", repeated, tag="4")]
1020 pub permissions: ::prost::alloc::vec::Vec<i32>,
1021 #[prost(message, optional, tag="5")]
1023 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1024 #[prost(message, optional, tag="6")]
1026 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
1027 #[prost(message, optional, tag="7")]
1029 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1030 #[prost(enumeration="KeyType", tag="8")]
1033 pub key_type: i32,
1034}
1035#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1037pub struct CreateApiKeyRequest {
1038 #[prost(string, tag="1")]
1040 pub name: ::prost::alloc::string::String,
1041 #[prost(enumeration="Permission", repeated, tag="2")]
1044 pub permissions: ::prost::alloc::vec::Vec<i32>,
1045 #[prost(message, optional, tag="3")]
1047 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1048 #[prost(enumeration="KeyType", tag="4")]
1051 pub key_type: i32,
1052}
1053#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1056pub struct CreateApiKeyResponse {
1057 #[prost(message, optional, tag="1")]
1059 pub api_key: ::core::option::Option<ApiKey>,
1060 #[prost(string, tag="2")]
1063 pub key: ::prost::alloc::string::String,
1064}
1065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1067pub struct ListApiKeysRequest {
1068 #[prost(enumeration="KeyType", tag="1")]
1070 pub key_type: i32,
1071}
1072#[derive(Clone, PartialEq, ::prost::Message)]
1074pub struct ListApiKeysResponse {
1075 #[prost(message, repeated, tag="1")]
1077 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
1078}
1079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1081pub struct RevokeApiKeyRequest {
1082 #[prost(string, tag="1")]
1084 pub api_key_id: ::prost::alloc::string::String,
1085}
1086#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1088pub struct RevokeApiKeyResponse {
1089}
1090#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1094#[repr(i32)]
1095pub enum KeyType {
1096 Unspecified = 0,
1097 ApiKey = 1,
1098 ScimToken = 2,
1099}
1100impl KeyType {
1101 pub fn as_str_name(&self) -> &'static str {
1106 match self {
1107 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
1108 Self::ApiKey => "KEY_TYPE_API_KEY",
1109 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
1110 }
1111 }
1112 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1114 match value {
1115 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1116 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
1117 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
1118 _ => None,
1119 }
1120 }
1121}
1122#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1127pub struct ExportUserDataRequest {
1128 #[prost(string, tag="1")]
1131 pub user_id: ::prost::alloc::string::String,
1132}
1133#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1135pub struct ExportUserDataResponse {
1136 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1138 pub status: i32,
1139 #[prost(string, tag="2")]
1142 pub result_url: ::prost::alloc::string::String,
1143 #[prost(string, tag="3")]
1146 pub export_id: ::prost::alloc::string::String,
1147}
1148#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1151pub struct DeleteUserDataRequest {
1152 #[prost(string, tag="1")]
1155 pub user_id: ::prost::alloc::string::String,
1156 #[prost(bool, tag="2")]
1159 pub anonymize: bool,
1160}
1161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1163pub struct DeleteUserDataResponse {
1164 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1166 pub status: i32,
1167 #[prost(message, optional, tag="2")]
1170 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
1171 #[prost(string, tag="3")]
1173 pub request_id: ::prost::alloc::string::String,
1174}
1175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1178pub struct ListPrivacyRequestsRequest {
1179 #[prost(int32, tag="1")]
1182 pub page_size: i32,
1183 #[prost(string, tag="2")]
1185 pub page_token: ::prost::alloc::string::String,
1186 #[prost(string, tag="3")]
1188 pub request_type: ::prost::alloc::string::String,
1189 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1191 pub status: i32,
1192}
1193#[derive(Clone, PartialEq, ::prost::Message)]
1195pub struct ListPrivacyRequestsResponse {
1196 #[prost(message, repeated, tag="1")]
1198 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1199 #[prost(string, tag="2")]
1201 pub next_page_token: ::prost::alloc::string::String,
1202}
1203#[derive(Clone, PartialEq, ::prost::Message)]
1205pub struct PrivacyRequest {
1206 #[prost(string, tag="1")]
1208 pub id: ::prost::alloc::string::String,
1209 #[prost(string, tag="2")]
1211 pub user_id: ::prost::alloc::string::String,
1212 #[prost(string, tag="3")]
1214 pub user_email: ::prost::alloc::string::String,
1215 #[prost(string, tag="4")]
1217 pub request_type: ::prost::alloc::string::String,
1218 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1220 pub status: i32,
1221 #[prost(bool, tag="6")]
1223 pub anonymize: bool,
1224 #[prost(string, tag="7")]
1226 pub requested_by_email: ::prost::alloc::string::String,
1227 #[prost(message, optional, tag="8")]
1229 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1230 #[prost(message, optional, tag="9")]
1232 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1233 #[prost(map="string, string", tag="10")]
1235 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1236}
1237#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1240pub struct CancelDeletionRequest {
1241 #[prost(string, tag="1")]
1243 pub request_id: ::prost::alloc::string::String,
1244 #[prost(string, tag="2")]
1246 pub confirmation_email: ::prost::alloc::string::String,
1247}
1248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1250pub struct CancelDeletionResponse {
1251 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1253 pub status: i32,
1254}
1255#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1258pub struct ImmediateDeleteRequest {
1259 #[prost(string, tag="1")]
1261 pub request_id: ::prost::alloc::string::String,
1262 #[prost(string, tag="2")]
1264 pub confirmation_email: ::prost::alloc::string::String,
1265}
1266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1268pub struct ImmediateDeleteResponse {
1269 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1271 pub status: i32,
1272}
1273#[derive(Clone, PartialEq, ::prost::Message)]
1276pub struct RectifyUserDataRequest {
1277 #[prost(string, tag="1")]
1280 pub user_id: ::prost::alloc::string::String,
1281 #[prost(map="string, string", tag="2")]
1285 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1286}
1287#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1289pub struct RectifyUserDataResponse {
1290 #[prost(string, repeated, tag="1")]
1292 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1293}
1294#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1297pub struct RestrictProcessingRequest {
1298 #[prost(string, tag="1")]
1301 pub user_id: ::prost::alloc::string::String,
1302 #[prost(bool, tag="2")]
1304 pub restricted: bool,
1305}
1306#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1308pub struct RestrictProcessingResponse {
1309 #[prost(bool, tag="1")]
1311 pub restricted: bool,
1312 #[prost(message, optional, tag="2")]
1314 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1315}
1316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1320pub struct GetDataExistenceConfirmationRequest {
1321 #[prost(string, tag="1")]
1324 pub user_id: ::prost::alloc::string::String,
1325}
1326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1328pub struct GetDataExistenceConfirmationResponse {
1329 #[prost(bool, tag="1")]
1331 pub exists: bool,
1332 #[prost(string, repeated, tag="2")]
1334 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1335}
1336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1339pub struct ListMyPrivacyRequestsRequest {
1340 #[prost(int32, tag="1")]
1343 pub page_size: i32,
1344 #[prost(string, tag="2")]
1346 pub page_token: ::prost::alloc::string::String,
1347 #[prost(string, tag="3")]
1349 pub request_type: ::prost::alloc::string::String,
1350 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1352 pub status: i32,
1353}
1354#[derive(Clone, PartialEq, ::prost::Message)]
1356pub struct ListMyPrivacyRequestsResponse {
1357 #[prost(message, repeated, tag="1")]
1359 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1360 #[prost(string, tag="2")]
1362 pub next_page_token: ::prost::alloc::string::String,
1363}
1364#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1368#[repr(i32)]
1369pub enum PrivacyRequestStatus {
1370 Unspecified = 0,
1372 Pending = 1,
1374 Processing = 2,
1376 Completed = 3,
1378 Failed = 4,
1380}
1381impl PrivacyRequestStatus {
1382 pub fn as_str_name(&self) -> &'static str {
1387 match self {
1388 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1389 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1390 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1391 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1392 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1393 }
1394 }
1395 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1397 match value {
1398 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1399 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1400 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1401 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1402 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1403 _ => None,
1404 }
1405 }
1406}
1407#[derive(Clone, PartialEq, ::prost::Message)]
1412pub struct AuditEvent {
1413 #[prost(string, tag="1")]
1416 pub id: ::prost::alloc::string::String,
1417 #[prost(string, tag="2")]
1420 pub org_id: ::prost::alloc::string::String,
1421 #[prost(string, tag="3")]
1424 pub actor_id: ::prost::alloc::string::String,
1425 #[prost(enumeration="AuditEventType", tag="4")]
1427 pub event_type: i32,
1428 #[prost(string, tag="5")]
1431 pub entity_type: ::prost::alloc::string::String,
1432 #[prost(string, tag="6")]
1435 pub entity_id: ::prost::alloc::string::String,
1436 #[prost(map="string, string", tag="7")]
1439 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1440 #[prost(message, optional, tag="10")]
1442 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1443}
1444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1447pub struct ListAuditEventsRequest {
1448 #[prost(string, tag="1")]
1450 pub page_token: ::prost::alloc::string::String,
1451 #[prost(int32, tag="2")]
1454 pub page_size: i32,
1455 #[prost(enumeration="AuditEventType", tag="3")]
1457 pub event_type: i32,
1458 #[prost(string, tag="4")]
1461 pub actor_id: ::prost::alloc::string::String,
1462 #[prost(message, optional, tag="5")]
1464 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1465 #[prost(message, optional, tag="6")]
1467 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1468}
1469#[derive(Clone, PartialEq, ::prost::Message)]
1471pub struct ListAuditEventsResponse {
1472 #[prost(message, repeated, tag="1")]
1474 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1475 #[prost(string, tag="2")]
1477 pub next_page_token: ::prost::alloc::string::String,
1478}
1479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1482pub struct ExportAuditTrailRequest {
1483 #[prost(enumeration="AuditExportFormat", tag="1")]
1485 pub format: i32,
1486 #[prost(message, optional, tag="2")]
1488 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1489 #[prost(message, optional, tag="3")]
1491 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1492}
1493#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1495pub struct ExportAuditTrailResponse {
1496 #[prost(string, tag="1")]
1499 pub export_url: ::prost::alloc::string::String,
1500 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1502 pub status: i32,
1503}
1504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1506pub struct AuditExport {
1507 #[prost(string, tag="1")]
1509 pub id: ::prost::alloc::string::String,
1510 #[prost(string, tag="2")]
1512 pub format: ::prost::alloc::string::String,
1513 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1515 pub status: i32,
1516 #[prost(string, tag="4")]
1518 pub result_url: ::prost::alloc::string::String,
1519 #[prost(string, tag="5")]
1521 pub error_message: ::prost::alloc::string::String,
1522 #[prost(string, tag="6")]
1524 pub requested_by_email: ::prost::alloc::string::String,
1525 #[prost(message, optional, tag="7")]
1527 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1528 #[prost(message, optional, tag="8")]
1530 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1531}
1532#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1535pub struct ListAuditExportsRequest {
1536}
1537#[derive(Clone, PartialEq, ::prost::Message)]
1539pub struct ListAuditExportsResponse {
1540 #[prost(message, repeated, tag="1")]
1542 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1543}
1544#[derive(Clone, PartialEq, ::prost::Message)]
1552pub struct AppendRequest {
1553 #[prost(string, tag="1")]
1559 pub event_type: ::prost::alloc::string::String,
1560 #[prost(string, tag="2")]
1562 pub org_id: ::prost::alloc::string::String,
1563 #[prost(string, optional, tag="3")]
1566 pub subject_user_id: ::core::option::Option<::prost::alloc::string::String>,
1567 #[prost(string, optional, tag="4")]
1570 pub actor_id: ::core::option::Option<::prost::alloc::string::String>,
1571 #[prost(message, optional, tag="5")]
1579 pub details: ::core::option::Option<::prost_types::Struct>,
1580}
1581#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1582pub struct AppendResponse {
1583 #[prost(string, tag="1")]
1585 pub event_id: ::prost::alloc::string::String,
1586}
1587#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1591#[repr(i32)]
1592pub enum AuditEventType {
1593 Unspecified = 0,
1595 CampaignCreated = 1,
1598 MessageSent = 2,
1600 MessageOpened = 3,
1602 AckRegistered = 4,
1604 EscalationExecuted = 5,
1606 CampaignStarted = 12,
1608 CampaignCancelled = 13,
1610 CampaignUpdated = 14,
1612 UserInvited = 6,
1615 UserDeactivated = 7,
1617 UserReactivated = 15,
1619 RoleChanged = 10,
1621 InviteRevoked = 16,
1623 ProfileUpdated = 17,
1625 SettingsUpdated = 18,
1627 PasskeyEnrolled = 19,
1629 DataExportRequested = 8,
1632 DataDeletionRequested = 9,
1634 DataRectified = 20,
1636 ProcessingRestricted = 21,
1638 DeletionCancelled = 22,
1640 DeletionImmediate = 23,
1642 SsoConfigured = 11,
1645 SsoProviderCreated = 24,
1647 SsoProviderDeleted = 25,
1649 OrgUpdated = 26,
1651 RoleCreated = 27,
1654 RoleUpdated = 28,
1656 RoleDeleted = 29,
1658 TemplateCreated = 30,
1661 TemplateUpdated = 31,
1663 ApiKeyCreated = 32,
1666 ApiKeyRevoked = 33,
1668 InviteLinkCreated = 34,
1671 InviteLinkRevoked = 35,
1673 GroupCreated = 36,
1676 GroupUpdated = 37,
1678 GroupDeleted = 38,
1680 GroupMembersAdded = 39,
1682 GroupMembersRemoved = 40,
1684 TeamCreated = 41,
1687 TeamUpdated = 42,
1689 TeamDeleted = 43,
1691 TeamMembersAdded = 44,
1693 TeamMembersRemoved = 45,
1695 ScimUserProvisioned = 46,
1698 ScimUserDeprovisioned = 47,
1700 ScimUserUpdated = 48,
1702 TranslationCreated = 49,
1705 TranslationApproved = 50,
1707 SandboxCreated = 51,
1710 SandboxExpired = 52,
1712 AiPredictionLogged = 53,
1715 MlPipelineTriggered = 54,
1717 ArchetypeClusteringTriggered = 55,
1719 OrgCreated = 56,
1722 OrgDeleted = 57,
1724 ReachabilityUpsert = 58,
1728 ReachabilityRemove = 59,
1731}
1732impl AuditEventType {
1733 pub fn as_str_name(&self) -> &'static str {
1738 match self {
1739 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1740 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1741 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1742 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1743 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1744 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1745 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1746 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1747 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1748 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1749 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1750 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1751 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1752 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1753 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1754 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1755 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1756 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1757 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1758 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1759 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1760 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1761 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1762 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1763 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1764 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1765 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1766 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1767 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1768 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1769 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1770 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1771 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1772 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1773 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1774 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1775 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1776 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1777 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1778 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1779 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1780 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1781 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1782 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1783 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1784 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1785 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1786 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1787 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1788 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1789 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1790 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1791 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1792 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1793 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1794 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1795 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1796 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1797 Self::ReachabilityUpsert => "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT",
1798 Self::ReachabilityRemove => "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE",
1799 }
1800 }
1801 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1803 match value {
1804 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1805 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1806 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1807 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1808 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1809 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1810 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1811 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1812 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
1813 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
1814 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
1815 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
1816 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
1817 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
1818 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
1819 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
1820 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
1821 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
1822 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
1823 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
1824 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
1825 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
1826 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
1827 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
1828 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
1829 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
1830 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
1831 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
1832 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
1833 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
1834 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
1835 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
1836 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
1837 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
1838 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
1839 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
1840 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
1841 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
1842 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
1843 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
1844 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
1845 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
1846 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
1847 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
1848 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
1849 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
1850 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
1851 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
1852 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
1853 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
1854 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
1855 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
1856 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
1857 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
1858 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
1859 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
1860 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
1861 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
1862 "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT" => Some(Self::ReachabilityUpsert),
1863 "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE" => Some(Self::ReachabilityRemove),
1864 _ => None,
1865 }
1866 }
1867}
1868#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1870#[repr(i32)]
1871pub enum AuditExportFormat {
1872 Unspecified = 0,
1874 Csv = 1,
1876 Json = 2,
1878 Parquet = 3,
1880}
1881impl AuditExportFormat {
1882 pub fn as_str_name(&self) -> &'static str {
1887 match self {
1888 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
1889 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
1890 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
1891 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
1892 }
1893 }
1894 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1896 match value {
1897 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1898 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
1899 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
1900 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
1901 _ => None,
1902 }
1903 }
1904}
1905#[derive(Clone, PartialEq, ::prost::Message)]
1910pub struct Campaign {
1911 #[prost(string, tag="1")]
1914 pub id: ::prost::alloc::string::String,
1915 #[prost(string, tag="2")]
1918 pub name: ::prost::alloc::string::String,
1919 #[prost(string, tag="3")]
1922 pub template_id: ::prost::alloc::string::String,
1923 #[prost(int32, tag="4")]
1925 pub template_version: i32,
1926 #[prost(string, tag="5")]
1928 pub audience_snapshot_ref: ::prost::alloc::string::String,
1929 #[prost(enumeration="CampaignStatus", tag="6")]
1931 pub status: i32,
1932 #[prost(message, optional, tag="7")]
1934 pub workflow: ::core::option::Option<WorkflowDefinition>,
1935 #[prost(int32, tag="8")]
1937 pub total_recipients: i32,
1938 #[prost(int32, tag="9")]
1940 pub action_completed_count: i32,
1941 #[prost(int32, tag="10")]
1943 pub missed_count: i32,
1944 #[prost(message, optional, tag="11")]
1946 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1947 #[prost(message, optional, tag="12")]
1949 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
1950 #[prost(message, optional, tag="13")]
1952 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1953 #[prost(string, tag="14")]
1956 pub sender_name: ::prost::alloc::string::String,
1957 #[prost(string, tag="15")]
1960 pub title: ::prost::alloc::string::String,
1961 #[prost(bool, tag="16")]
1963 pub critical: bool,
1964 #[prost(string, tag="17")]
1969 pub default_locale: ::prost::alloc::string::String,
1970 #[prost(bool, tag="18")]
1974 pub wait_for_enrollment: bool,
1975 #[prost(message, optional, tag="19")]
1978 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
1979}
1980#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1985pub struct CampaignOriginatingArchetype {
1986 #[prost(string, tag="1")]
1988 pub group_id: ::prost::alloc::string::String,
1989 #[prost(string, tag="2")]
1992 pub archetype_label: ::prost::alloc::string::String,
1993}
1994#[derive(Clone, PartialEq, ::prost::Message)]
1996pub struct AudienceMember {
1997 #[prost(string, tag="1")]
1999 pub user_id: ::prost::alloc::string::String,
2000 #[prost(map="string, string", tag="2")]
2002 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2003}
2004#[derive(Clone, PartialEq, ::prost::Message)]
2006pub struct CreateCampaignRequest {
2007 #[prost(string, tag="1")]
2010 pub name: ::prost::alloc::string::String,
2011 #[prost(string, tag="2")]
2014 pub template_id: ::prost::alloc::string::String,
2015 #[prost(int32, tag="3")]
2017 pub template_version: i32,
2018 #[prost(string, repeated, tag="4")]
2021 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2022 #[prost(message, optional, tag="5")]
2024 pub workflow: ::core::option::Option<WorkflowDefinition>,
2025 #[prost(string, tag="6")]
2028 pub sender_name: ::prost::alloc::string::String,
2029 #[prost(string, tag="7")]
2032 pub title: ::prost::alloc::string::String,
2033 #[prost(message, repeated, tag="8")]
2037 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
2038 #[prost(bool, tag="9")]
2041 pub include_restricted: bool,
2042 #[prost(bool, tag="10")]
2044 pub critical: bool,
2045 #[prost(string, tag="11")]
2047 pub default_locale: ::prost::alloc::string::String,
2048 #[prost(bool, tag="12")]
2052 pub wait_for_enrollment: bool,
2053 #[prost(message, optional, tag="13")]
2058 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2059}
2060#[derive(Clone, PartialEq, ::prost::Message)]
2062pub struct CreateCampaignResponse {
2063 #[prost(message, optional, tag="1")]
2065 pub campaign: ::core::option::Option<Campaign>,
2066}
2067#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2069pub struct StartCampaignRequest {
2070 #[prost(string, tag="1")]
2073 pub campaign_id: ::prost::alloc::string::String,
2074}
2075#[derive(Clone, PartialEq, ::prost::Message)]
2077pub struct StartCampaignResponse {
2078 #[prost(message, optional, tag="1")]
2080 pub campaign: ::core::option::Option<Campaign>,
2081}
2082#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2084pub struct GetCampaignRequest {
2085 #[prost(string, tag="1")]
2088 pub campaign_id: ::prost::alloc::string::String,
2089}
2090#[derive(Clone, PartialEq, ::prost::Message)]
2092pub struct GetCampaignResponse {
2093 #[prost(message, optional, tag="1")]
2095 pub campaign: ::core::option::Option<Campaign>,
2096}
2097#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2099pub struct ListCampaignsRequest {
2100 #[prost(message, optional, tag="1")]
2102 pub pagination: ::core::option::Option<Pagination>,
2103}
2104#[derive(Clone, PartialEq, ::prost::Message)]
2106pub struct ListCampaignsResponse {
2107 #[prost(message, repeated, tag="1")]
2109 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
2110 #[prost(message, optional, tag="2")]
2112 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2113}
2114#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2116pub struct CancelCampaignRequest {
2117 #[prost(string, tag="1")]
2120 pub campaign_id: ::prost::alloc::string::String,
2121}
2122#[derive(Clone, PartialEq, ::prost::Message)]
2124pub struct CancelCampaignResponse {
2125 #[prost(message, optional, tag="1")]
2127 pub campaign: ::core::option::Option<Campaign>,
2128}
2129#[derive(Clone, PartialEq, ::prost::Message)]
2132pub struct UpdateCampaignRequest {
2133 #[prost(string, tag="1")]
2136 pub campaign_id: ::prost::alloc::string::String,
2137 #[prost(string, tag="2")]
2140 pub name: ::prost::alloc::string::String,
2141 #[prost(string, tag="3")]
2144 pub sender_name: ::prost::alloc::string::String,
2145 #[prost(string, tag="4")]
2148 pub title: ::prost::alloc::string::String,
2149 #[prost(string, tag="5")]
2152 pub template_id: ::prost::alloc::string::String,
2153 #[prost(int32, tag="6")]
2155 pub template_version: i32,
2156 #[prost(message, optional, tag="7")]
2158 pub workflow: ::core::option::Option<WorkflowDefinition>,
2159}
2160#[derive(Clone, PartialEq, ::prost::Message)]
2162pub struct UpdateCampaignResponse {
2163 #[prost(message, optional, tag="1")]
2165 pub campaign: ::core::option::Option<Campaign>,
2166}
2167#[derive(Clone, PartialEq, ::prost::Message)]
2174pub struct DeliveryMetadata {
2175 #[prost(message, optional, tag="1")]
2179 pub original_message: ::core::option::Option<Message>,
2180 #[prost(string, tag="2")]
2183 pub original_recipient_name: ::prost::alloc::string::String,
2184 #[prost(string, tag="3")]
2187 pub campaign_title: ::prost::alloc::string::String,
2188 #[prost(message, optional, tag="4")]
2191 pub reminder_fired_at: ::core::option::Option<::prost_types::Timestamp>,
2192}
2193#[derive(Clone, PartialEq, ::prost::Message)]
2194pub struct Delivery {
2195 #[prost(string, tag="1")]
2198 pub id: ::prost::alloc::string::String,
2199 #[prost(string, tag="2")]
2202 pub user_id: ::prost::alloc::string::String,
2203 #[prost(string, tag="3")]
2206 pub campaign_id: ::prost::alloc::string::String,
2207 #[prost(enumeration="DeliveryStatus", tag="4")]
2209 pub status: i32,
2210 #[prost(message, optional, tag="5")]
2212 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
2213 #[prost(message, optional, tag="6")]
2215 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
2216 #[prost(message, optional, tag="7")]
2218 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
2219 #[prost(string, tag="8")]
2221 pub recipient_email: ::prost::alloc::string::String,
2222 #[prost(enumeration="delivery::Kind", tag="12")]
2225 pub kind: i32,
2226 #[prost(string, tag="13")]
2230 pub parent_delivery_id: ::prost::alloc::string::String,
2231 #[prost(string, tag="14")]
2235 pub rendered_locale: ::prost::alloc::string::String,
2236 #[prost(message, optional, tag="15")]
2240 pub metadata: ::core::option::Option<DeliveryMetadata>,
2241}
2242pub mod delivery {
2244 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2246 #[repr(i32)]
2247 pub enum Kind {
2248 Unspecified = 0,
2250 Primary = 1,
2252 Escalation = 2,
2254 ReminderFyi = 3,
2259 }
2260 impl Kind {
2261 pub fn as_str_name(&self) -> &'static str {
2266 match self {
2267 Self::Unspecified => "KIND_UNSPECIFIED",
2268 Self::Primary => "KIND_PRIMARY",
2269 Self::Escalation => "KIND_ESCALATION",
2270 Self::ReminderFyi => "KIND_REMINDER_FYI",
2271 }
2272 }
2273 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2275 match value {
2276 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
2277 "KIND_PRIMARY" => Some(Self::Primary),
2278 "KIND_ESCALATION" => Some(Self::Escalation),
2279 "KIND_REMINDER_FYI" => Some(Self::ReminderFyi),
2280 _ => None,
2281 }
2282 }
2283 }
2284}
2285#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2287pub struct ListDeliveriesRequest {
2288 #[prost(string, tag="1")]
2291 pub campaign_id: ::prost::alloc::string::String,
2292 #[prost(enumeration="DeliveryStatus", tag="2")]
2294 pub status_filter: i32,
2295 #[prost(message, optional, tag="3")]
2297 pub pagination: ::core::option::Option<Pagination>,
2298}
2299#[derive(Clone, PartialEq, ::prost::Message)]
2301pub struct ListDeliveriesResponse {
2302 #[prost(message, repeated, tag="1")]
2304 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2305 #[prost(message, optional, tag="2")]
2307 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2308}
2309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2314pub struct GetCampaignArchetypeBreakdownRequest {
2315 #[prost(string, tag="1")]
2318 pub campaign_id: ::prost::alloc::string::String,
2319}
2320#[derive(Clone, PartialEq, ::prost::Message)]
2325pub struct ArchetypeShareShift {
2326 #[prost(string, tag="1")]
2328 pub label: ::prost::alloc::string::String,
2329 #[prost(double, tag="2")]
2332 pub share_before: f64,
2333 #[prost(double, tag="3")]
2336 pub share_after: f64,
2337 #[prost(bool, tag="4")]
2340 pub is_origin: bool,
2341 #[prost(uint64, tag="5")]
2344 pub email_delivered_count: u64,
2345 #[prost(double, tag="6")]
2348 pub email_open_rate_real: f64,
2349 #[prost(double, tag="7")]
2352 pub email_open_rate_raw: f64,
2353}
2354#[derive(Clone, PartialEq, ::prost::Message)]
2359pub struct GetCampaignArchetypeBreakdownResponse {
2360 #[prost(message, repeated, tag="1")]
2363 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2364 #[prost(message, optional, tag="2")]
2367 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2368 #[prost(message, optional, tag="3")]
2370 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2371 #[prost(bool, tag="4")]
2375 pub insufficient_history: bool,
2376}
2377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2384pub struct ResolveOrCreateShortCodeRequest {
2385 #[prost(string, tag="1")]
2388 pub campaign_id: ::prost::alloc::string::String,
2389}
2390#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2394pub struct ResolveOrCreateShortCodeResponse {
2395 #[prost(string, tag="1")]
2397 pub short_code: ::prost::alloc::string::String,
2398}
2399#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2406pub struct GetCampaignByShortCodeRequest {
2407 #[prost(string, tag="1")]
2410 pub short_code: ::prost::alloc::string::String,
2411}
2412#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2419pub struct GetCampaignByShortCodeResponse {
2420 #[prost(string, tag="1")]
2423 pub campaign_id: ::prost::alloc::string::String,
2424 #[prost(string, tag="2")]
2427 pub org_id: ::prost::alloc::string::String,
2428 #[prost(string, tag="3")]
2432 pub organization_name: ::prost::alloc::string::String,
2433 #[prost(string, tag="4")]
2437 pub subject: ::prost::alloc::string::String,
2438}
2439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2444pub struct Device {
2445 #[prost(string, tag="1")]
2448 pub device_id: ::prost::alloc::string::String,
2449 #[prost(string, tag="2")]
2452 pub user_id: ::prost::alloc::string::String,
2453 #[prost(enumeration="Platform", tag="3")]
2455 pub platform: i32,
2456 #[prost(string, tag="4")]
2458 pub push_token: ::prost::alloc::string::String,
2459 #[prost(bool, tag="5")]
2461 pub active: bool,
2462 #[prost(message, optional, tag="6")]
2464 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2465 #[prost(message, optional, tag="7")]
2467 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2468}
2469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2471pub struct DeviceSummary {
2472 #[prost(string, tag="1")]
2474 pub device_id: ::prost::alloc::string::String,
2475 #[prost(string, tag="2")]
2477 pub user_id: ::prost::alloc::string::String,
2478 #[prost(enumeration="Platform", tag="3")]
2480 pub platform: i32,
2481 #[prost(bool, tag="4")]
2483 pub active: bool,
2484 #[prost(message, optional, tag="5")]
2486 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2487 #[prost(message, optional, tag="6")]
2489 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2490}
2491#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2493pub struct RegisterRequest {
2494 #[prost(string, tag="1")]
2497 pub device_id: ::prost::alloc::string::String,
2498 #[prost(enumeration="Platform", tag="2")]
2500 pub platform: i32,
2501 #[prost(string, tag="3")]
2504 pub push_token: ::prost::alloc::string::String,
2505}
2506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2508pub struct RegisterResponse {
2509 #[prost(message, optional, tag="1")]
2511 pub device: ::core::option::Option<DeviceSummary>,
2512}
2513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2515pub struct DeactivateRequest {
2516 #[prost(string, tag="1")]
2519 pub device_id: ::prost::alloc::string::String,
2520}
2521#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2523pub struct DeactivateResponse {
2524 #[prost(bool, tag="1")]
2526 pub success: bool,
2527}
2528#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2530pub struct ListDevicesRequest {
2531}
2532#[derive(Clone, PartialEq, ::prost::Message)]
2534pub struct ListDevicesResponse {
2535 #[prost(message, repeated, tag="1")]
2537 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2538}
2539#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2541pub struct ListMemberDevicesRequest {
2542 #[prost(string, tag="1")]
2545 pub user_id: ::prost::alloc::string::String,
2546}
2547#[derive(Clone, PartialEq, ::prost::Message)]
2549pub struct ListMemberDevicesResponse {
2550 #[prost(message, repeated, tag="1")]
2552 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2553}
2554#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2559pub struct UserSettings {
2560 #[prost(enumeration="ThemePreference", tag="1")]
2562 pub theme_preference: i32,
2563 #[prost(string, tag="2")]
2567 pub preferred_locale: ::prost::alloc::string::String,
2568}
2569#[derive(Clone, PartialEq, ::prost::Message)]
2572pub struct UserProfile {
2573 #[prost(string, tag="1")]
2576 pub first_name: ::prost::alloc::string::String,
2577 #[prost(string, tag="2")]
2580 pub last_name: ::prost::alloc::string::String,
2581 #[prost(string, tag="3")]
2584 pub department: ::prost::alloc::string::String,
2585 #[prost(string, tag="4")]
2588 pub title: ::prost::alloc::string::String,
2589 #[prost(string, tag="5")]
2592 pub phone: ::prost::alloc::string::String,
2593 #[prost(string, tag="6")]
2596 pub location: ::prost::alloc::string::String,
2597 #[prost(string, tag="7")]
2600 pub employee_id: ::prost::alloc::string::String,
2601 #[prost(string, tag="8")]
2604 pub manager_name: ::prost::alloc::string::String,
2605 #[prost(string, tag="9")]
2608 pub start_date: ::prost::alloc::string::String,
2609 #[prost(map="string, string", tag="10")]
2612 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2613 #[prost(string, tag="11")]
2617 pub manager_id: ::prost::alloc::string::String,
2618}
2619#[derive(Clone, PartialEq, ::prost::Message)]
2621pub struct User {
2622 #[prost(string, tag="1")]
2624 pub id: ::prost::alloc::string::String,
2625 #[prost(string, tag="2")]
2628 pub email: ::prost::alloc::string::String,
2629 #[prost(string, tag="3")]
2632 pub name: ::prost::alloc::string::String,
2633 #[prost(enumeration="UserStatus", tag="5")]
2635 pub status: i32,
2636 #[prost(message, optional, tag="6")]
2638 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2639 #[prost(message, optional, tag="7")]
2641 pub role: ::core::option::Option<Role>,
2642 #[prost(string, tag="8")]
2644 pub role_id: ::prost::alloc::string::String,
2645 #[prost(message, optional, tag="9")]
2648 pub profile: ::core::option::Option<UserProfile>,
2649 #[prost(bool, tag="10")]
2652 pub processing_restricted: bool,
2653 #[prost(string, tag="11")]
2656 pub data_governance_region: ::prost::alloc::string::String,
2657}
2658#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2662#[repr(i32)]
2663pub enum UserStatus {
2664 Unspecified = 0,
2666 Invited = 1,
2668 Active = 2,
2670 Deactivated = 3,
2672}
2673impl UserStatus {
2674 pub fn as_str_name(&self) -> &'static str {
2679 match self {
2680 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2681 Self::Invited => "USER_STATUS_INVITED",
2682 Self::Active => "USER_STATUS_ACTIVE",
2683 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2684 }
2685 }
2686 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2688 match value {
2689 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2690 "USER_STATUS_INVITED" => Some(Self::Invited),
2691 "USER_STATUS_ACTIVE" => Some(Self::Active),
2692 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2693 _ => None,
2694 }
2695 }
2696}
2697#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2699#[repr(i32)]
2700pub enum ThemePreference {
2701 Unspecified = 0,
2703 Light = 1,
2705 Dark = 2,
2707 System = 3,
2709}
2710impl ThemePreference {
2711 pub fn as_str_name(&self) -> &'static str {
2716 match self {
2717 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2718 Self::Light => "THEME_PREFERENCE_LIGHT",
2719 Self::Dark => "THEME_PREFERENCE_DARK",
2720 Self::System => "THEME_PREFERENCE_SYSTEM",
2721 }
2722 }
2723 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2725 match value {
2726 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2727 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2728 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2729 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2730 _ => None,
2731 }
2732 }
2733}
2734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2739pub struct Group {
2740 #[prost(string, tag="1")]
2742 pub id: ::prost::alloc::string::String,
2743 #[prost(string, tag="2")]
2746 pub name: ::prost::alloc::string::String,
2747 #[prost(string, tag="3")]
2750 pub description: ::prost::alloc::string::String,
2751 #[prost(int32, tag="4")]
2753 pub member_count: i32,
2754 #[prost(message, optional, tag="5")]
2756 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2757 #[prost(message, optional, tag="6")]
2759 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2760 #[prost(bool, tag="7")]
2762 pub is_default: bool,
2763 #[prost(string, tag="8")]
2765 pub created_by: ::prost::alloc::string::String,
2766}
2767#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2769pub struct CreateGroupRequest {
2770 #[prost(string, tag="1")]
2773 pub name: ::prost::alloc::string::String,
2774 #[prost(string, tag="2")]
2777 pub description: ::prost::alloc::string::String,
2778}
2779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2781pub struct CreateGroupResponse {
2782 #[prost(message, optional, tag="1")]
2784 pub group: ::core::option::Option<Group>,
2785}
2786#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2788pub struct GetGroupRequest {
2789 #[prost(string, tag="1")]
2791 pub group_id: ::prost::alloc::string::String,
2792}
2793#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2795pub struct GetGroupResponse {
2796 #[prost(message, optional, tag="1")]
2798 pub group: ::core::option::Option<Group>,
2799}
2800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2802pub struct ListGroupsRequest {
2803 #[prost(message, optional, tag="1")]
2805 pub pagination: ::core::option::Option<Pagination>,
2806}
2807#[derive(Clone, PartialEq, ::prost::Message)]
2809pub struct ListGroupsResponse {
2810 #[prost(message, repeated, tag="1")]
2812 pub groups: ::prost::alloc::vec::Vec<Group>,
2813 #[prost(message, optional, tag="2")]
2815 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2816}
2817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2819pub struct UpdateGroupRequest {
2820 #[prost(string, tag="1")]
2822 pub group_id: ::prost::alloc::string::String,
2823 #[prost(string, tag="2")]
2827 pub name: ::prost::alloc::string::String,
2828 #[prost(string, tag="3")]
2831 pub description: ::prost::alloc::string::String,
2832}
2833#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2835pub struct UpdateGroupResponse {
2836 #[prost(message, optional, tag="1")]
2838 pub group: ::core::option::Option<Group>,
2839}
2840#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2842pub struct DeleteGroupRequest {
2843 #[prost(string, tag="1")]
2846 pub group_id: ::prost::alloc::string::String,
2847}
2848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2850pub struct DeleteGroupResponse {
2851}
2852#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2854pub struct AddGroupMembersRequest {
2855 #[prost(string, tag="1")]
2857 pub group_id: ::prost::alloc::string::String,
2858 #[prost(string, repeated, tag="2")]
2862 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2863}
2864#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2866pub struct AddGroupMembersResponse {
2867 #[prost(message, optional, tag="1")]
2869 pub group: ::core::option::Option<Group>,
2870}
2871#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2873pub struct RemoveGroupMembersRequest {
2874 #[prost(string, tag="1")]
2876 pub group_id: ::prost::alloc::string::String,
2877 #[prost(string, repeated, tag="2")]
2880 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2881}
2882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2884pub struct RemoveGroupMembersResponse {
2885 #[prost(message, optional, tag="1")]
2887 pub group: ::core::option::Option<Group>,
2888}
2889#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2891pub struct ListGroupMembersRequest {
2892 #[prost(string, tag="1")]
2894 pub group_id: ::prost::alloc::string::String,
2895 #[prost(message, optional, tag="2")]
2897 pub pagination: ::core::option::Option<Pagination>,
2898}
2899#[derive(Clone, PartialEq, ::prost::Message)]
2901pub struct ListGroupMembersResponse {
2902 #[prost(message, repeated, tag="1")]
2904 pub users: ::prost::alloc::vec::Vec<User>,
2905 #[prost(message, optional, tag="2")]
2907 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2908}
2909#[derive(Clone, PartialEq, ::prost::Message)]
2911pub struct UserGroupMembership {
2912 #[prost(string, tag="1")]
2914 pub user_id: ::prost::alloc::string::String,
2915 #[prost(message, repeated, tag="2")]
2917 pub groups: ::prost::alloc::vec::Vec<Group>,
2918}
2919#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2921pub struct GetUserGroupMembershipsRequest {
2922 #[prost(string, repeated, tag="1")]
2925 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2926}
2927#[derive(Clone, PartialEq, ::prost::Message)]
2929pub struct GetUserGroupMembershipsResponse {
2930 #[prost(message, repeated, tag="1")]
2932 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
2933}
2934#[derive(Clone, PartialEq, ::prost::Message)]
2938pub struct TouchEvent {
2939 #[prost(string, tag="1")]
2942 pub screen_name: ::prost::alloc::string::String,
2943 #[prost(float, tag="2")]
2946 pub x_pct: f32,
2947 #[prost(float, tag="3")]
2950 pub y_pct: f32,
2951 #[prost(enumeration="TouchEventType", tag="4")]
2953 pub event_type: i32,
2954 #[prost(int32, tag="5")]
2956 pub screen_width: i32,
2957 #[prost(int32, tag="6")]
2959 pub screen_height: i32,
2960 #[prost(message, optional, tag="7")]
2962 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
2963 #[prost(string, tag="8")]
2966 pub campaign_id: ::prost::alloc::string::String,
2967}
2968#[derive(Clone, PartialEq, ::prost::Message)]
2970pub struct IngestTouchEventsRequest {
2971 #[prost(message, repeated, tag="1")]
2974 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
2975}
2976#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2978pub struct IngestTouchEventsResponse {
2979 #[prost(int32, tag="1")]
2981 pub ingested_count: i32,
2982}
2983#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2985pub struct HeatmapDataPoint {
2986 #[prost(float, tag="1")]
2988 pub x_pct: f32,
2989 #[prost(float, tag="2")]
2991 pub y_pct: f32,
2992 #[prost(float, tag="3")]
2994 pub value: f32,
2995}
2996#[derive(Clone, PartialEq, ::prost::Message)]
2998pub struct QueryHeatmapDataRequest {
2999 #[prost(string, tag="1")]
3002 pub screen_name: ::prost::alloc::string::String,
3003 #[prost(message, optional, tag="2")]
3005 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
3006 #[prost(message, optional, tag="3")]
3008 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
3009 #[prost(string, tag="4")]
3012 pub campaign_id: ::prost::alloc::string::String,
3013 #[prost(float, tag="6")]
3016 pub grid_resolution: f32,
3017 #[prost(enumeration="HeatmapMode", tag="7")]
3019 pub mode: i32,
3020 #[prost(enumeration="TouchEventType", repeated, tag="8")]
3022 pub event_types: ::prost::alloc::vec::Vec<i32>,
3023}
3024#[derive(Clone, PartialEq, ::prost::Message)]
3026pub struct QueryHeatmapDataResponse {
3027 #[prost(message, repeated, tag="1")]
3029 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
3030 #[prost(string, tag="3")]
3033 pub screenshot_url: ::prost::alloc::string::String,
3034 #[prost(bool, tag="4")]
3036 pub cohort_enabled: bool,
3037}
3038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3040pub struct UploadScreenshotRequest {
3041 #[prost(string, tag="1")]
3044 pub screen_name: ::prost::alloc::string::String,
3045 #[prost(string, tag="2")]
3047 pub app_version: ::prost::alloc::string::String,
3048 #[prost(bytes="vec", tag="3")]
3051 pub image_data: ::prost::alloc::vec::Vec<u8>,
3052}
3053#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3055pub struct UploadScreenshotResponse {
3056 #[prost(string, tag="1")]
3058 pub url: ::prost::alloc::string::String,
3059}
3060#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3062pub struct ScreenScreenshot {
3063 #[prost(string, tag="1")]
3065 pub screen_name: ::prost::alloc::string::String,
3066 #[prost(string, tag="2")]
3068 pub url: ::prost::alloc::string::String,
3069 #[prost(string, tag="3")]
3071 pub app_version: ::prost::alloc::string::String,
3072}
3073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3075pub struct ListScreenshotsRequest {
3076}
3077#[derive(Clone, PartialEq, ::prost::Message)]
3079pub struct ListScreenshotsResponse {
3080 #[prost(message, repeated, tag="1")]
3082 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3083}
3084#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3088#[repr(i32)]
3089pub enum TouchEventType {
3090 Unspecified = 0,
3092 Tap = 1,
3094 LongPress = 2,
3096 Scroll = 3,
3098 ActionClick = 4,
3100}
3101impl TouchEventType {
3102 pub fn as_str_name(&self) -> &'static str {
3107 match self {
3108 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3109 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3110 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3111 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3112 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3113 }
3114 }
3115 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3117 match value {
3118 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3119 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3120 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3121 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3122 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3123 _ => None,
3124 }
3125 }
3126}
3127#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3129#[repr(i32)]
3130pub enum HeatmapMode {
3131 Unspecified = 0,
3133 Total = 1,
3135 Median = 2,
3137}
3138impl HeatmapMode {
3139 pub fn as_str_name(&self) -> &'static str {
3144 match self {
3145 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3146 Self::Total => "HEATMAP_MODE_TOTAL",
3147 Self::Median => "HEATMAP_MODE_MEDIAN",
3148 }
3149 }
3150 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3152 match value {
3153 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3154 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3155 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3156 _ => None,
3157 }
3158 }
3159}
3160#[derive(Clone, PartialEq, ::prost::Message)]
3164pub struct InboxEntry {
3165 #[prost(string, tag="1")]
3168 pub delivery_id: ::prost::alloc::string::String,
3169 #[prost(message, optional, tag="2")]
3171 pub message: ::core::option::Option<Message>,
3172 #[prost(enumeration="DeliveryStatus", tag="3")]
3174 pub status: i32,
3175 #[prost(bool, tag="4")]
3177 pub read: bool,
3178 #[prost(message, optional, tag="5")]
3180 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3181 #[prost(enumeration="delivery::Kind", tag="6")]
3185 pub kind: i32,
3186 #[prost(string, tag="7")]
3189 pub parent_delivery_id: ::prost::alloc::string::String,
3190 #[prost(string, tag="8")]
3193 pub rendered_locale: ::prost::alloc::string::String,
3194 #[prost(message, optional, tag="9")]
3198 pub metadata: ::core::option::Option<DeliveryMetadata>,
3199}
3200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3202pub struct SyncRequest {
3203 #[prost(message, optional, tag="1")]
3205 pub since: ::core::option::Option<::prost_types::Timestamp>,
3206 #[prost(int32, tag="2")]
3209 pub limit: i32,
3210}
3211#[derive(Clone, PartialEq, ::prost::Message)]
3213pub struct SyncResponse {
3214 #[prost(message, repeated, tag="1")]
3216 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3217 #[prost(message, optional, tag="2")]
3219 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3220}
3221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3223pub struct MarkReadRequest {
3224 #[prost(string, tag="1")]
3227 pub delivery_id: ::prost::alloc::string::String,
3228}
3229#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3231pub struct MarkReadResponse {
3232 #[prost(bool, tag="1")]
3234 pub success: bool,
3235}
3236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3238pub struct GetMessageRequest {
3239 #[prost(string, tag="1")]
3242 pub delivery_id: ::prost::alloc::string::String,
3243}
3244#[derive(Clone, PartialEq, ::prost::Message)]
3246pub struct GetMessageResponse {
3247 #[prost(message, optional, tag="1")]
3249 pub entry: ::core::option::Option<InboxEntry>,
3250}
3251#[derive(Clone, PartialEq, ::prost::Message)]
3256pub struct Archetype {
3257 #[prost(string, tag="1")]
3259 pub label: ::prost::alloc::string::String,
3260 #[prost(string, tag="2")]
3262 pub description: ::prost::alloc::string::String,
3263 #[prost(float, tag="3")]
3265 pub percentage: f32,
3266 #[prost(map="string, double", tag="4")]
3273 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3274 #[prost(map="string, message", tag="5")]
3279 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3280 #[prost(message, optional, tag="6")]
3284 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3285 #[prost(message, optional, tag="7")]
3289 pub forecast: ::core::option::Option<ArchetypeForecast>,
3290 #[prost(message, repeated, tag="8")]
3296 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3297 #[prost(message, optional, tag="9")]
3300 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3301 #[prost(message, optional, tag="10")]
3305 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3306}
3307#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3312pub struct DimensionStats {
3313 #[prost(double, tag="1")]
3315 pub centroid: f64,
3316 #[prost(double, tag="2")]
3318 pub p25: f64,
3319 #[prost(double, tag="3")]
3321 pub p50: f64,
3322 #[prost(double, tag="4")]
3324 pub p75: f64,
3325 #[prost(double, tag="5")]
3328 pub group_p50: f64,
3329}
3330#[derive(Clone, PartialEq, ::prost::Message)]
3334pub struct TapHeatmap {
3335 #[prost(int32, tag="1")]
3337 pub width: i32,
3338 #[prost(int32, tag="2")]
3340 pub height: i32,
3341 #[prost(double, repeated, tag="3")]
3344 pub values: ::prost::alloc::vec::Vec<f64>,
3345 #[prost(int32, tag="4")]
3348 pub session_count: i32,
3349 #[prost(message, repeated, tag="5")]
3353 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3354}
3355#[derive(Clone, PartialEq, ::prost::Message)]
3357pub struct TapHeatmapLayer {
3358 #[prost(string, tag="1")]
3361 pub event_type: ::prost::alloc::string::String,
3362 #[prost(double, repeated, tag="2")]
3365 pub values: ::prost::alloc::vec::Vec<f64>,
3366}
3367#[derive(Clone, PartialEq, ::prost::Message)]
3369pub struct ArchetypeForecast {
3370 #[prost(message, repeated, tag="1")]
3373 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3374}
3375#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3377pub struct ForecastHorizon {
3378 #[prost(int32, tag="1")]
3380 pub days: i32,
3381 #[prost(double, tag="2")]
3384 pub predicted_share: f64,
3385 #[prost(double, tag="3")]
3387 pub lower: f64,
3388 #[prost(double, tag="4")]
3390 pub upper: f64,
3391 #[prost(enumeration="ConfidenceLevel", tag="5")]
3393 pub confidence: i32,
3394}
3395#[derive(Clone, PartialEq, ::prost::Message)]
3398pub struct ExemplarSession {
3399 #[prost(string, tag="1")]
3402 pub session_id: ::prost::alloc::string::String,
3403 #[prost(int32, tag="2")]
3406 pub rank: i32,
3407 #[prost(double, tag="3")]
3409 pub distance: f64,
3410 #[prost(int32, tag="4")]
3412 pub duration_seconds: i32,
3413 #[prost(string, tag="5")]
3417 pub platform: ::prost::alloc::string::String,
3418}
3419#[derive(Clone, PartialEq, ::prost::Message)]
3423pub struct ScreenDwell {
3424 #[prost(message, repeated, tag="1")]
3427 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3428}
3429#[derive(Clone, PartialEq, ::prost::Message)]
3430pub struct ScreenDwellEntry {
3431 #[prost(string, tag="1")]
3435 pub screen_name: ::prost::alloc::string::String,
3436 #[prost(double, tag="2")]
3438 pub median_seconds: f64,
3439 #[prost(double, tag="3")]
3441 pub p75_seconds: f64,
3442 #[prost(int32, tag="4")]
3444 pub session_count: i32,
3445}
3446#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3450pub struct ResponseTimeline {
3451 #[prost(message, optional, tag="1")]
3453 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3454 #[prost(message, optional, tag="2")]
3457 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3458 #[prost(message, optional, tag="3")]
3461 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3462 #[prost(int32, tag="4")]
3464 pub delivery_count: i32,
3465}
3466#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3468pub struct LatencyPercentiles {
3469 #[prost(double, tag="1")]
3470 pub p50: f64,
3471 #[prost(double, tag="2")]
3472 pub p75: f64,
3473 #[prost(double, tag="3")]
3474 pub p95: f64,
3475}
3476#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3479pub struct CohortPrediction {
3480 #[prost(float, tag="1")]
3482 pub predicted_ack_rate: f32,
3483 #[prost(float, tag="2")]
3485 pub confidence_low: f32,
3486 #[prost(float, tag="3")]
3488 pub confidence_high: f32,
3489 #[prost(enumeration="ConfidenceLevel", tag="4")]
3491 pub confidence_level: i32,
3492 #[prost(int32, tag="5")]
3494 pub data_point_count: i32,
3495}
3496#[derive(Clone, PartialEq, ::prost::Message)]
3498pub struct CampaignAdvisory {
3499 #[prost(message, optional, tag="1")]
3501 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3502 #[prost(int32, tag="2")]
3505 pub suggested_escalation_delay_minutes: i32,
3506 #[prost(message, repeated, tag="3")]
3508 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3509}
3510#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3512pub struct GetGroupArchetypesRequest {
3513 #[prost(string, tag="1")]
3515 pub group_id: ::prost::alloc::string::String,
3516}
3517#[derive(Clone, PartialEq, ::prost::Message)]
3519pub struct GetGroupArchetypesResponse {
3520 #[prost(message, repeated, tag="1")]
3522 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3523 #[prost(int32, tag="2")]
3525 pub data_point_count: i32,
3526 #[prost(enumeration="PipelineState", tag="3")]
3530 pub pipeline_state: i32,
3531}
3532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3534pub struct PredictCampaignAckRequest {
3535 #[prost(string, tag="1")]
3537 pub group_id: ::prost::alloc::string::String,
3538 #[prost(string, tag="2")]
3540 pub template_type: ::prost::alloc::string::String,
3541 #[prost(int32, tag="3")]
3543 pub workflow_step_count: i32,
3544}
3545#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3547pub struct PredictCampaignAckResponse {
3548 #[prost(message, optional, tag="1")]
3550 pub prediction: ::core::option::Option<CohortPrediction>,
3551}
3552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3554pub struct GetCampaignAdvisoryRequest {
3555 #[prost(string, tag="1")]
3557 pub group_id: ::prost::alloc::string::String,
3558 #[prost(string, tag="2")]
3560 pub template_id: ::prost::alloc::string::String,
3561 #[prost(int32, tag="3")]
3563 pub template_version: i32,
3564 #[prost(int32, tag="4")]
3566 pub workflow_step_count: i32,
3567}
3568#[derive(Clone, PartialEq, ::prost::Message)]
3570pub struct GetCampaignAdvisoryResponse {
3571 #[prost(message, optional, tag="1")]
3573 pub advisory: ::core::option::Option<CampaignAdvisory>,
3574}
3575#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3577pub struct GetInsightNarrativeRequest {
3578 #[prost(string, tag="1")]
3580 pub group_id: ::prost::alloc::string::String,
3581 #[prost(string, tag="2")]
3583 pub prompt_name: ::prost::alloc::string::String,
3584}
3585#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3587pub struct GetInsightNarrativeResponse {
3588 #[prost(string, tag="1")]
3590 pub narrative: ::prost::alloc::string::String,
3591 #[prost(message, optional, tag="2")]
3593 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3594 #[prost(string, tag="3")]
3596 pub model_id: ::prost::alloc::string::String,
3597}
3598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3601pub struct TriggerMlPipelineRequest {
3602}
3603#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3605pub struct TriggerMlPipelineResponse {
3606 #[prost(int32, tag="1")]
3608 pub remaining_this_month: i32,
3609 #[prost(message, optional, tag="2")]
3611 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3612}
3613#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3617pub struct TriggerArchetypeClusteringRequest {
3618 #[prost(string, tag="1")]
3620 pub group_id: ::prost::alloc::string::String,
3621}
3622#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3624pub struct TriggerArchetypeClusteringResponse {
3625 #[prost(string, tag="1")]
3628 pub workflow_id: ::prost::alloc::string::String,
3629 #[prost(int32, tag="2")]
3632 pub remaining_this_month: i32,
3633 #[prost(message, optional, tag="3")]
3636 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3637}
3638#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3642pub struct GenerateCampaignBodyDraftRequest {
3643 #[prost(string, tag="1")]
3645 pub group_id: ::prost::alloc::string::String,
3646 #[prost(string, tag="2")]
3648 pub archetype_label: ::prost::alloc::string::String,
3649 #[prost(string, tag="3")]
3652 pub lane_action: ::prost::alloc::string::String,
3653}
3654#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3656pub struct GenerateCampaignBodyDraftResponse {
3657 #[prost(string, tag="1")]
3660 pub body_markdown: ::prost::alloc::string::String,
3661}
3662#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3666#[repr(i32)]
3667pub enum ConfidenceLevel {
3668 Unspecified = 0,
3669 Low = 1,
3671 Medium = 2,
3673 High = 3,
3675}
3676impl ConfidenceLevel {
3677 pub fn as_str_name(&self) -> &'static str {
3682 match self {
3683 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3684 Self::Low => "CONFIDENCE_LEVEL_LOW",
3685 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3686 Self::High => "CONFIDENCE_LEVEL_HIGH",
3687 }
3688 }
3689 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3691 match value {
3692 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3693 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3694 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3695 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3696 _ => None,
3697 }
3698 }
3699}
3700#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3706#[repr(i32)]
3707pub enum PipelineState {
3708 Unspecified = 0,
3709 NeverRun = 1,
3712 BelowThreshold = 2,
3716 NoClusters = 3,
3720 Ready = 4,
3722}
3723impl PipelineState {
3724 pub fn as_str_name(&self) -> &'static str {
3729 match self {
3730 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3731 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3732 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3733 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3734 Self::Ready => "PIPELINE_STATE_READY",
3735 }
3736 }
3737 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3739 match value {
3740 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3741 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3742 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3743 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3744 "PIPELINE_STATE_READY" => Some(Self::Ready),
3745 _ => None,
3746 }
3747 }
3748}
3749#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3756pub struct Reachability {
3757 #[prost(string, tag="1")]
3759 pub id: ::prost::alloc::string::String,
3760 #[prost(string, tag="2")]
3762 pub org_id: ::prost::alloc::string::String,
3763 #[prost(string, tag="3")]
3765 pub user_id: ::prost::alloc::string::String,
3766 #[prost(enumeration="ChannelName", tag="4")]
3768 pub channel: i32,
3769 #[prost(message, optional, tag="5")]
3771 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3772 #[prost(message, optional, tag="6")]
3774 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
3775 #[prost(string, optional, tag="7")]
3779 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3780}
3781#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3785pub struct RegionPolicy {
3786 #[prost(string, tag="1")]
3787 pub org_id: ::prost::alloc::string::String,
3788 #[prost(enumeration="ChannelName", tag="2")]
3789 pub channel: i32,
3790 #[prost(string, repeated, tag="3")]
3793 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3794 #[prost(message, optional, tag="4")]
3795 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
3796}
3797#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3805#[repr(i32)]
3806pub enum DispatchStatus {
3807 Unspecified = 0,
3809 Sent = 1,
3811 Failed = 2,
3814 Deduped = 3,
3818}
3819impl DispatchStatus {
3820 pub fn as_str_name(&self) -> &'static str {
3825 match self {
3826 Self::Unspecified => "DISPATCH_STATUS_UNSPECIFIED",
3827 Self::Sent => "DISPATCH_STATUS_SENT",
3828 Self::Failed => "DISPATCH_STATUS_FAILED",
3829 Self::Deduped => "DISPATCH_STATUS_DEDUPED",
3830 }
3831 }
3832 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3834 match value {
3835 "DISPATCH_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
3836 "DISPATCH_STATUS_SENT" => Some(Self::Sent),
3837 "DISPATCH_STATUS_FAILED" => Some(Self::Failed),
3838 "DISPATCH_STATUS_DEDUPED" => Some(Self::Deduped),
3839 _ => None,
3840 }
3841 }
3842}
3843#[derive(Clone, PartialEq, ::prost::Message)]
3850pub struct DispatchToChannelRequest {
3851 #[prost(string, tag="1")]
3853 pub dispatch_id: ::prost::alloc::string::String,
3854 #[prost(string, tag="2")]
3855 pub org_id: ::prost::alloc::string::String,
3856 #[prost(string, tag="3")]
3857 pub user_id: ::prost::alloc::string::String,
3858 #[prost(enumeration="ChannelName", tag="4")]
3860 pub channel: i32,
3861 #[prost(string, tag="5")]
3863 pub template_id: ::prost::alloc::string::String,
3864 #[prost(map="string, string", tag="6")]
3866 pub template_vars: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
3867 #[prost(string, tag="7")]
3869 pub locale: ::prost::alloc::string::String,
3870 #[prost(string, optional, tag="8")]
3873 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3874}
3875#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3876pub struct DispatchToChannelResponse {
3877 #[prost(string, tag="1")]
3879 pub dispatch_id: ::prost::alloc::string::String,
3880 #[prost(enumeration="DispatchStatus", tag="2")]
3882 pub status: i32,
3883 #[prost(string, optional, tag="3")]
3886 pub failure_reason: ::core::option::Option<::prost::alloc::string::String>,
3887}
3888#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3895pub struct UpsertReachabilityRequest {
3896 #[prost(string, tag="1")]
3897 pub org_id: ::prost::alloc::string::String,
3898 #[prost(string, tag="2")]
3899 pub user_id: ::prost::alloc::string::String,
3900 #[prost(enumeration="ChannelName", tag="3")]
3901 pub channel: i32,
3902 #[prost(string, tag="4")]
3906 pub identifier_plaintext: ::prost::alloc::string::String,
3907 #[prost(string, optional, tag="5")]
3910 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3911}
3912#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3913pub struct UpsertReachabilityResponse {
3914 #[prost(message, optional, tag="1")]
3917 pub reachability: ::core::option::Option<Reachability>,
3918}
3919#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3925pub struct RemoveReachabilityRequest {
3926 #[prost(string, tag="1")]
3927 pub org_id: ::prost::alloc::string::String,
3928 #[prost(string, tag="2")]
3929 pub user_id: ::prost::alloc::string::String,
3930 #[prost(enumeration="ChannelName", tag="3")]
3931 pub channel: i32,
3932}
3933#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3934pub struct RemoveReachabilityResponse {
3935 #[prost(bool, tag="1")]
3938 pub removed: bool,
3939}
3940#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3945pub struct GetReachabilityRequest {
3946 #[prost(string, tag="1")]
3947 pub org_id: ::prost::alloc::string::String,
3948 #[prost(string, tag="2")]
3949 pub user_id: ::prost::alloc::string::String,
3950 #[prost(enumeration="ChannelName", tag="3")]
3951 pub channel: i32,
3952}
3953#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3954pub struct GetReachabilityResponse {
3955 #[prost(message, optional, tag="1")]
3957 pub reachability: ::core::option::Option<Reachability>,
3958}
3959#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3966pub struct ListReachabilityForUserRequest {
3967 #[prost(string, tag="1")]
3968 pub org_id: ::prost::alloc::string::String,
3969 #[prost(string, tag="2")]
3970 pub user_id: ::prost::alloc::string::String,
3971}
3972#[derive(Clone, PartialEq, ::prost::Message)]
3973pub struct ListReachabilityForUserResponse {
3974 #[prost(message, repeated, tag="1")]
3976 pub reachabilities: ::prost::alloc::vec::Vec<Reachability>,
3977}
3978#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3981pub struct GetRegionPolicyRequest {
3982 #[prost(string, tag="1")]
3983 pub org_id: ::prost::alloc::string::String,
3984 #[prost(enumeration="ChannelName", tag="2")]
3985 pub channel: i32,
3986}
3987#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3988pub struct GetRegionPolicyResponse {
3989 #[prost(message, optional, tag="1")]
3992 pub policy: ::core::option::Option<RegionPolicy>,
3993}
3994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3996pub struct SetRegionPolicyRequest {
3997 #[prost(string, tag="1")]
3998 pub org_id: ::prost::alloc::string::String,
3999 #[prost(enumeration="ChannelName", tag="2")]
4000 pub channel: i32,
4001 #[prost(string, repeated, tag="3")]
4003 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4004}
4005#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4006pub struct SetRegionPolicyResponse {
4007 #[prost(message, optional, tag="1")]
4008 pub policy: ::core::option::Option<RegionPolicy>,
4009}
4010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4017pub struct GetCostCapPolicyRequest {
4018 #[prost(string, tag="1")]
4019 pub org_id: ::prost::alloc::string::String,
4020 #[prost(enumeration="ChannelName", tag="2")]
4021 pub channel: i32,
4022}
4023#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4024pub struct GetCostCapPolicyResponse {
4025 #[prost(string, tag="1")]
4026 pub org_id: ::prost::alloc::string::String,
4027 #[prost(enumeration="ChannelName", tag="2")]
4028 pub channel: i32,
4029 #[prost(int64, tag="3")]
4031 pub cap_micros: i64,
4032 #[prost(int64, tag="4")]
4034 pub used_micros: i64,
4035 #[prost(int32, tag="5")]
4037 pub period_yyyymm: i32,
4038}
4039#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4042pub struct SetCostCapPolicyRequest {
4043 #[prost(string, tag="1")]
4044 pub org_id: ::prost::alloc::string::String,
4045 #[prost(enumeration="ChannelName", tag="2")]
4046 pub channel: i32,
4047 #[prost(int64, tag="3")]
4048 pub cap_micros: i64,
4049}
4050#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4051pub struct SetCostCapPolicyResponse {
4052 #[prost(string, tag="1")]
4053 pub org_id: ::prost::alloc::string::String,
4054 #[prost(enumeration="ChannelName", tag="2")]
4055 pub channel: i32,
4056 #[prost(int64, tag="3")]
4057 pub cap_micros: i64,
4058 #[prost(int64, tag="4")]
4059 pub used_micros: i64,
4060 #[prost(int32, tag="5")]
4061 pub period_yyyymm: i32,
4062}
4063#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4068pub struct InviteLink {
4069 #[prost(string, tag="1")]
4071 pub id: ::prost::alloc::string::String,
4072 #[prost(string, tag="2")]
4074 pub token: ::prost::alloc::string::String,
4075 #[prost(string, tag="3")]
4077 pub role_id: ::prost::alloc::string::String,
4078 #[prost(int32, tag="4")]
4081 pub max_uses: i32,
4082 #[prost(int32, tag="5")]
4084 pub use_count: i32,
4085 #[prost(message, optional, tag="6")]
4087 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4088 #[prost(message, optional, tag="7")]
4090 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
4091 #[prost(string, tag="8")]
4093 pub created_by: ::prost::alloc::string::String,
4094 #[prost(message, optional, tag="9")]
4096 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4097 #[prost(string, tag="10")]
4100 pub data_governance_region: ::prost::alloc::string::String,
4101}
4102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4104pub struct CreateInviteLinkRequest {
4105 #[prost(string, tag="1")]
4107 pub role_id: ::prost::alloc::string::String,
4108 #[prost(int32, tag="2")]
4110 pub max_uses: i32,
4111 #[prost(int32, tag="3")]
4114 pub expires_in_hours: i32,
4115 #[prost(string, tag="4")]
4118 pub data_governance_region: ::prost::alloc::string::String,
4119}
4120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4122pub struct CreateInviteLinkResponse {
4123 #[prost(message, optional, tag="1")]
4125 pub invite_link: ::core::option::Option<InviteLink>,
4126 #[prost(string, tag="2")]
4128 pub url: ::prost::alloc::string::String,
4129}
4130#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4132pub struct ListInviteLinksRequest {
4133}
4134#[derive(Clone, PartialEq, ::prost::Message)]
4136pub struct ListInviteLinksResponse {
4137 #[prost(message, repeated, tag="1")]
4139 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
4140}
4141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4143pub struct RevokeInviteLinkRequest {
4144 #[prost(string, tag="1")]
4146 pub invite_link_id: ::prost::alloc::string::String,
4147}
4148#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4150pub struct RevokeInviteLinkResponse {
4151}
4152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4154pub struct RedeemInviteLinkRequest {
4155 #[prost(string, tag="1")]
4157 pub token: ::prost::alloc::string::String,
4158}
4159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4161pub struct RedeemInviteLinkResponse {
4162 #[prost(string, tag="1")]
4164 pub organization_name: ::prost::alloc::string::String,
4165}
4166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4168pub struct ValidateInviteLinkRequest {
4169 #[prost(string, tag="1")]
4171 pub token: ::prost::alloc::string::String,
4172 #[prost(string, tag="2")]
4175 pub email: ::prost::alloc::string::String,
4176}
4177#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4179pub struct ValidateInviteLinkResponse {
4180 #[prost(string, tag="1")]
4182 pub organization_name: ::prost::alloc::string::String,
4183}
4184#[derive(Clone, PartialEq, ::prost::Message)]
4188pub struct InviteUserRequest {
4189 #[prost(string, tag="1")]
4192 pub email: ::prost::alloc::string::String,
4193 #[prost(string, tag="2")]
4196 pub name: ::prost::alloc::string::String,
4197 #[prost(string, tag="4")]
4199 pub role_id: ::prost::alloc::string::String,
4200 #[prost(message, optional, tag="5")]
4202 pub profile: ::core::option::Option<UserProfile>,
4203 #[prost(string, tag="6")]
4206 pub data_governance_region: ::prost::alloc::string::String,
4207}
4208#[derive(Clone, PartialEq, ::prost::Message)]
4210pub struct InviteUserResponse {
4211 #[prost(message, optional, tag="1")]
4213 pub user: ::core::option::Option<User>,
4214}
4215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4217pub struct GetUserRequest {
4218 #[prost(string, tag="1")]
4220 pub user_id: ::prost::alloc::string::String,
4221}
4222#[derive(Clone, PartialEq, ::prost::Message)]
4224pub struct GetUserResponse {
4225 #[prost(message, optional, tag="1")]
4227 pub user: ::core::option::Option<User>,
4228}
4229#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4231pub struct ListUsersRequest {
4232 #[prost(message, optional, tag="1")]
4234 pub pagination: ::core::option::Option<Pagination>,
4235}
4236#[derive(Clone, PartialEq, ::prost::Message)]
4238pub struct ListUsersResponse {
4239 #[prost(message, repeated, tag="1")]
4241 pub users: ::prost::alloc::vec::Vec<User>,
4242 #[prost(message, optional, tag="2")]
4244 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4245}
4246#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4248pub struct UpdateUserRoleRequest {
4249 #[prost(string, tag="1")]
4251 pub user_id: ::prost::alloc::string::String,
4252 #[prost(string, tag="2")]
4254 pub role_id: ::prost::alloc::string::String,
4255}
4256#[derive(Clone, PartialEq, ::prost::Message)]
4258pub struct UpdateUserRoleResponse {
4259 #[prost(message, optional, tag="1")]
4261 pub user: ::core::option::Option<User>,
4262}
4263#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4265pub struct DeactivateUserRequest {
4266 #[prost(string, tag="1")]
4268 pub user_id: ::prost::alloc::string::String,
4269}
4270#[derive(Clone, PartialEq, ::prost::Message)]
4272pub struct DeactivateUserResponse {
4273 #[prost(message, optional, tag="1")]
4275 pub user: ::core::option::Option<User>,
4276}
4277#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4279pub struct ReactivateUserRequest {
4280 #[prost(string, tag="1")]
4282 pub user_id: ::prost::alloc::string::String,
4283}
4284#[derive(Clone, PartialEq, ::prost::Message)]
4286pub struct ReactivateUserResponse {
4287 #[prost(message, optional, tag="1")]
4289 pub user: ::core::option::Option<User>,
4290}
4291#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4293pub struct RevokeInviteRequest {
4294 #[prost(string, tag="1")]
4297 pub user_id: ::prost::alloc::string::String,
4298}
4299#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4301pub struct RevokeInviteResponse {
4302}
4303#[derive(Clone, PartialEq, ::prost::Message)]
4305pub struct UpdateUserProfileRequest {
4306 #[prost(string, tag="1")]
4309 pub user_id: ::prost::alloc::string::String,
4310 #[prost(message, optional, tag="2")]
4312 pub profile: ::core::option::Option<UserProfile>,
4313}
4314#[derive(Clone, PartialEq, ::prost::Message)]
4316pub struct UpdateUserProfileResponse {
4317 #[prost(message, optional, tag="1")]
4319 pub user: ::core::option::Option<User>,
4320}
4321#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4323pub struct GetUserSettingsRequest {
4324}
4325#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4327pub struct GetUserSettingsResponse {
4328 #[prost(message, optional, tag="1")]
4330 pub settings: ::core::option::Option<UserSettings>,
4331}
4332#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4334pub struct UpdateUserSettingsRequest {
4335 #[prost(message, optional, tag="1")]
4338 pub settings: ::core::option::Option<UserSettings>,
4339}
4340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4342pub struct UpdateUserSettingsResponse {
4343 #[prost(message, optional, tag="1")]
4345 pub settings: ::core::option::Option<UserSettings>,
4346}
4347#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4349pub struct BulkInviteUsersRequest {
4350 #[prost(string, repeated, tag="1")]
4353 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4354 #[prost(string, tag="2")]
4356 pub role_id: ::prost::alloc::string::String,
4357}
4358#[derive(Clone, PartialEq, ::prost::Message)]
4360pub struct BulkInviteResult {
4361 #[prost(string, tag="1")]
4363 pub email: ::prost::alloc::string::String,
4364 #[prost(bool, tag="2")]
4366 pub success: bool,
4367 #[prost(string, tag="3")]
4370 pub error: ::prost::alloc::string::String,
4371 #[prost(message, optional, tag="4")]
4373 pub user: ::core::option::Option<User>,
4374}
4375#[derive(Clone, PartialEq, ::prost::Message)]
4377pub struct BulkInviteUsersResponse {
4378 #[prost(message, repeated, tag="1")]
4380 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
4381 #[prost(int32, tag="2")]
4383 pub invited_count: i32,
4384 #[prost(int32, tag="3")]
4386 pub failed_count: i32,
4387}
4388#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4392pub struct ConfirmPasskeyEnrollmentRequest {
4393}
4394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4396pub struct ConfirmPasskeyEnrollmentResponse {
4397 #[prost(bool, tag="1")]
4399 pub confirmed: bool,
4400}
4401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4403pub struct UpdateUserRegionRequest {
4404 #[prost(string, tag="1")]
4406 pub user_id: ::prost::alloc::string::String,
4407 #[prost(string, tag="2")]
4410 pub data_governance_region: ::prost::alloc::string::String,
4411}
4412#[derive(Clone, PartialEq, ::prost::Message)]
4414pub struct UpdateUserRegionResponse {
4415 #[prost(message, optional, tag="1")]
4417 pub user: ::core::option::Option<User>,
4418 #[prost(string, tag="2")]
4421 pub migration_workflow_id: ::prost::alloc::string::String,
4422}
4423#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4432pub struct Pepper {
4433 #[prost(int32, tag="1")]
4435 pub version: i32,
4436 #[prost(bytes="vec", tag="2")]
4440 pub key_material: ::prost::alloc::vec::Vec<u8>,
4441}
4442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4449pub struct GetPeppersRequest {
4450 #[prost(string, tag="1")]
4452 pub org_id: ::prost::alloc::string::String,
4453 #[prost(string, tag="2")]
4456 pub purpose: ::prost::alloc::string::String,
4457}
4458#[derive(Clone, PartialEq, ::prost::Message)]
4459pub struct GetPeppersResponse {
4460 #[prost(message, repeated, tag="1")]
4465 pub peppers: ::prost::alloc::vec::Vec<Pepper>,
4466}
4467#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4472pub struct SsoAttributeMapping {
4473 #[prost(string, tag="1")]
4476 pub idp_claim: ::prost::alloc::string::String,
4477 #[prost(string, tag="2")]
4481 pub profile_field: ::prost::alloc::string::String,
4482}
4483#[derive(Clone, PartialEq, ::prost::Message)]
4485pub struct Organization {
4486 #[prost(string, tag="1")]
4488 pub id: ::prost::alloc::string::String,
4489 #[prost(string, tag="2")]
4492 pub name: ::prost::alloc::string::String,
4493 #[prost(message, optional, tag="3")]
4495 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4496 #[prost(message, optional, tag="4")]
4498 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4499 #[prost(enumeration="Industry", tag="5")]
4501 pub industry: i32,
4502 #[prost(enumeration="CompanySize", tag="6")]
4504 pub company_size: i32,
4505 #[prost(message, repeated, tag="7")]
4508 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4509 #[prost(string, tag="8")]
4513 pub default_locale: ::prost::alloc::string::String,
4514 #[prost(enumeration="OrgType", tag="9")]
4516 pub org_type: i32,
4517 #[prost(message, optional, tag="10")]
4519 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4520 #[prost(string, tag="11")]
4523 pub data_governance_region: ::prost::alloc::string::String,
4524 #[prost(string, tag="12")]
4527 pub data_content_region: ::prost::alloc::string::String,
4528 #[prost(int32, tag="13")]
4533 pub ml_retrain_cold_threshold: i32,
4534 #[prost(bool, tag="14")]
4536 pub ml_cancelled_counts: bool,
4537 #[prost(int32, tag="15")]
4539 pub ml_manual_limit_monthly: i32,
4540 #[prost(int32, tag="16")]
4542 pub ml_manual_retrains_used: i32,
4543 #[prost(bool, tag="17")]
4545 pub ml_needs_retrain: bool,
4546 #[prost(int32, tag="18")]
4548 pub campaigns_since_last_training: i32,
4549 #[prost(int32, tag="19")]
4551 pub total_completed_campaigns: i32,
4552 #[prost(message, optional, tag="20")]
4554 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4555}
4556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4560pub struct CreateOrganizationRequest {
4561 #[prost(string, tag="1")]
4564 pub name: ::prost::alloc::string::String,
4565 #[prost(enumeration="Industry", tag="2")]
4567 pub industry: i32,
4568 #[prost(enumeration="CompanySize", tag="3")]
4570 pub company_size: i32,
4571 #[prost(string, tag="4")]
4574 pub access_code: ::prost::alloc::string::String,
4575 #[prost(string, tag="5")]
4578 pub data_governance_region: ::prost::alloc::string::String,
4579 #[prost(string, tag="6")]
4582 pub fixture_id: ::prost::alloc::string::String,
4583}
4584#[derive(Clone, PartialEq, ::prost::Message)]
4586pub struct CreateOrganizationResponse {
4587 #[prost(message, optional, tag="1")]
4589 pub organization: ::core::option::Option<Organization>,
4590 #[prost(message, optional, tag="2")]
4592 pub admin_user: ::core::option::Option<User>,
4593}
4594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4596pub struct GetOrganizationRequest {
4597}
4598#[derive(Clone, PartialEq, ::prost::Message)]
4600pub struct GetOrganizationResponse {
4601 #[prost(message, optional, tag="1")]
4603 pub organization: ::core::option::Option<Organization>,
4604}
4605#[derive(Clone, PartialEq, ::prost::Message)]
4607pub struct UpdateOrganizationRequest {
4608 #[prost(string, tag="1")]
4611 pub name: ::prost::alloc::string::String,
4612 #[prost(message, optional, tag="2")]
4614 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4615 #[prost(enumeration="Industry", tag="3")]
4617 pub industry: i32,
4618 #[prost(enumeration="CompanySize", tag="4")]
4620 pub company_size: i32,
4621 #[prost(string, tag="5")]
4624 pub default_locale: ::prost::alloc::string::String,
4625 #[prost(int32, tag="6")]
4627 pub ml_retrain_cold_threshold: i32,
4628 #[prost(bool, optional, tag="7")]
4631 pub ml_cancelled_counts: ::core::option::Option<bool>,
4632 #[prost(int32, tag="8")]
4635 pub ml_manual_limit_monthly: i32,
4636}
4637#[derive(Clone, PartialEq, ::prost::Message)]
4639pub struct UpdateOrganizationResponse {
4640 #[prost(message, optional, tag="1")]
4642 pub organization: ::core::option::Option<Organization>,
4643}
4644#[derive(Clone, PartialEq, ::prost::Message)]
4646pub struct UpdateSsoAttributeMappingsRequest {
4647 #[prost(message, repeated, tag="1")]
4649 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4650}
4651#[derive(Clone, PartialEq, ::prost::Message)]
4653pub struct UpdateSsoAttributeMappingsResponse {
4654 #[prost(message, optional, tag="1")]
4656 pub organization: ::core::option::Option<Organization>,
4657}
4658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4660pub struct RotateAnalyticsSaltRequest {
4661 #[prost(int32, tag="1")]
4663 pub new_bucket_count: i32,
4664}
4665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4667pub struct RotateAnalyticsSaltResponse {
4668 #[prost(int32, tag="1")]
4670 pub bucket_count: i32,
4671}
4672#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4674pub struct UpdateAnalyticsEpsilonRequest {
4675 #[prost(float, tag="1")]
4677 pub epsilon: f32,
4678}
4679#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4681pub struct UpdateAnalyticsEpsilonResponse {
4682 #[prost(float, tag="1")]
4684 pub epsilon: f32,
4685}
4686#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4688pub struct CreateSandboxOrganizationRequest {
4689 #[prost(string, tag="1")]
4692 pub name: ::prost::alloc::string::String,
4693 #[prost(message, optional, tag="2")]
4696 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4697 #[prost(string, tag="3")]
4700 pub data_governance_region: ::prost::alloc::string::String,
4701 #[prost(string, tag="4")]
4705 pub fixture_id: ::prost::alloc::string::String,
4706}
4707#[derive(Clone, PartialEq, ::prost::Message)]
4709pub struct CreateSandboxOrganizationResponse {
4710 #[prost(message, optional, tag="1")]
4712 pub organization: ::core::option::Option<Organization>,
4713 #[prost(message, optional, tag="2")]
4715 pub admin_user: ::core::option::Option<User>,
4716}
4717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4720pub struct DeleteSandboxOrganizationRequest {
4721 #[prost(string, tag="1")]
4723 pub org_id: ::prost::alloc::string::String,
4724}
4725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4728pub struct DeleteSandboxOrganizationResponse {
4729 #[prost(string, tag="1")]
4731 pub workflow_id: ::prost::alloc::string::String,
4732}
4733#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4735pub struct SandboxFixture {
4736 #[prost(string, tag="1")]
4738 pub id: ::prost::alloc::string::String,
4739 #[prost(string, tag="2")]
4741 pub name: ::prost::alloc::string::String,
4742 #[prost(string, tag="3")]
4744 pub description: ::prost::alloc::string::String,
4745 #[prost(bool, tag="4")]
4748 pub is_default: bool,
4749}
4750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4753pub struct ListSandboxFixturesRequest {
4754}
4755#[derive(Clone, PartialEq, ::prost::Message)]
4757pub struct ListSandboxFixturesResponse {
4758 #[prost(message, repeated, tag="1")]
4760 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
4761}
4762#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4765pub struct ListUserOrganizationsRequest {
4766}
4767#[derive(Clone, PartialEq, ::prost::Message)]
4769pub struct ListUserOrganizationsResponse {
4770 #[prost(message, repeated, tag="1")]
4773 pub organizations: ::prost::alloc::vec::Vec<Organization>,
4774}
4775#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4780pub struct ListUserSandboxesRequest {
4781}
4782#[derive(Clone, PartialEq, ::prost::Message)]
4784pub struct ListUserSandboxesResponse {
4785 #[prost(message, repeated, tag="1")]
4790 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
4791}
4792#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4796#[repr(i32)]
4797pub enum Industry {
4798 Unspecified = 0,
4799 Technology = 1,
4800 Finance = 2,
4801 Healthcare = 3,
4802 Education = 4,
4803 Retail = 5,
4804 Manufacturing = 6,
4805 Media = 7,
4806 Other = 8,
4807}
4808impl Industry {
4809 pub fn as_str_name(&self) -> &'static str {
4814 match self {
4815 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
4816 Self::Technology => "INDUSTRY_TECHNOLOGY",
4817 Self::Finance => "INDUSTRY_FINANCE",
4818 Self::Healthcare => "INDUSTRY_HEALTHCARE",
4819 Self::Education => "INDUSTRY_EDUCATION",
4820 Self::Retail => "INDUSTRY_RETAIL",
4821 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
4822 Self::Media => "INDUSTRY_MEDIA",
4823 Self::Other => "INDUSTRY_OTHER",
4824 }
4825 }
4826 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4828 match value {
4829 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
4830 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
4831 "INDUSTRY_FINANCE" => Some(Self::Finance),
4832 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
4833 "INDUSTRY_EDUCATION" => Some(Self::Education),
4834 "INDUSTRY_RETAIL" => Some(Self::Retail),
4835 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
4836 "INDUSTRY_MEDIA" => Some(Self::Media),
4837 "INDUSTRY_OTHER" => Some(Self::Other),
4838 _ => None,
4839 }
4840 }
4841}
4842#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4844#[repr(i32)]
4845pub enum CompanySize {
4846 Unspecified = 0,
4847 CompanySize1200 = 1,
4848 CompanySize200500 = 2,
4849 CompanySize5001000 = 3,
4850 CompanySize10005000 = 4,
4851 CompanySize5000Plus = 5,
4852}
4853impl CompanySize {
4854 pub fn as_str_name(&self) -> &'static str {
4859 match self {
4860 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
4861 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
4862 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
4863 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
4864 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
4865 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
4866 }
4867 }
4868 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4870 match value {
4871 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
4872 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
4873 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
4874 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
4875 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
4876 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
4877 _ => None,
4878 }
4879 }
4880}
4881#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4883#[repr(i32)]
4884pub enum OrgType {
4885 Unspecified = 0,
4886 Standard = 1,
4887 Sandbox = 2,
4888 Staff = 3,
4891}
4892impl OrgType {
4893 pub fn as_str_name(&self) -> &'static str {
4898 match self {
4899 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
4900 Self::Standard => "ORG_TYPE_STANDARD",
4901 Self::Sandbox => "ORG_TYPE_SANDBOX",
4902 Self::Staff => "ORG_TYPE_STAFF",
4903 }
4904 }
4905 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4907 match value {
4908 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4909 "ORG_TYPE_STANDARD" => Some(Self::Standard),
4910 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
4911 "ORG_TYPE_STAFF" => Some(Self::Staff),
4912 _ => None,
4913 }
4914 }
4915}
4916#[derive(Clone, PartialEq, ::prost::Message)]
4920pub struct UserRenderContext {
4921 #[prost(string, tag="1")]
4923 pub user_id: ::prost::alloc::string::String,
4924 #[prost(map="string, string", tag="2")]
4927 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4928}
4929#[derive(Clone, PartialEq, ::prost::Message)]
4931pub struct RenderBatchRequest {
4932 #[prost(string, tag="1")]
4934 pub template_id: ::prost::alloc::string::String,
4935 #[prost(int32, tag="2")]
4937 pub version: i32,
4938 #[prost(message, repeated, tag="3")]
4941 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
4942}
4943#[derive(Clone, PartialEq, ::prost::Message)]
4946pub struct RenderBatchResponse {
4947 #[prost(string, tag="1")]
4949 pub user_id: ::prost::alloc::string::String,
4950 #[prost(message, optional, tag="2")]
4952 pub message: ::core::option::Option<Message>,
4953 #[prost(string, tag="3")]
4955 pub error: ::prost::alloc::string::String,
4956}
4957#[derive(Clone, PartialEq, ::prost::Message)]
4962pub struct SessionRecording {
4963 #[prost(string, tag="1")]
4965 pub id: ::prost::alloc::string::String,
4966 #[prost(message, optional, tag="2")]
4968 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
4969 #[prost(message, optional, tag="3")]
4971 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
4972 #[prost(int32, tag="4")]
4974 pub duration_seconds: i32,
4975 #[prost(float, tag="5")]
4977 pub activity_score: f32,
4978}
4979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4981pub struct ListSessionRecordingsRequest {
4982 #[prost(string, tag="1")]
4985 pub campaign_id: ::prost::alloc::string::String,
4986 #[prost(message, optional, tag="2")]
4988 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
4989 #[prost(message, optional, tag="3")]
4991 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
4992 #[prost(message, optional, tag="4")]
4994 pub pagination: ::core::option::Option<Pagination>,
4995}
4996#[derive(Clone, PartialEq, ::prost::Message)]
4998pub struct ListSessionRecordingsResponse {
4999 #[prost(message, repeated, tag="1")]
5001 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
5002 #[prost(message, optional, tag="2")]
5004 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5005}
5006#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5008pub struct GetSessionSnapshotsRequest {
5009 #[prost(string, tag="1")]
5012 pub recording_id: ::prost::alloc::string::String,
5013}
5014#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5016pub struct GetSessionSnapshotsResponse {
5017 #[prost(string, tag="1")]
5020 pub snapshot_data: ::prost::alloc::string::String,
5021}
5022#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5026pub struct ListRolesRequest {
5027}
5028#[derive(Clone, PartialEq, ::prost::Message)]
5030pub struct ListRolesResponse {
5031 #[prost(message, repeated, tag="1")]
5033 pub roles: ::prost::alloc::vec::Vec<Role>,
5034}
5035#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5037pub struct CreateRoleRequest {
5038 #[prost(string, tag="1")]
5041 pub name: ::prost::alloc::string::String,
5042 #[prost(enumeration="Permission", repeated, tag="2")]
5045 pub permissions: ::prost::alloc::vec::Vec<i32>,
5046}
5047#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5049pub struct CreateRoleResponse {
5050 #[prost(message, optional, tag="1")]
5052 pub role: ::core::option::Option<Role>,
5053}
5054#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5056pub struct UpdateRoleRequest {
5057 #[prost(string, tag="1")]
5059 pub role_id: ::prost::alloc::string::String,
5060 #[prost(string, tag="2")]
5062 pub name: ::prost::alloc::string::String,
5063 #[prost(enumeration="Permission", repeated, tag="3")]
5067 pub permissions: ::prost::alloc::vec::Vec<i32>,
5068}
5069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5071pub struct UpdateRoleResponse {
5072 #[prost(message, optional, tag="1")]
5074 pub role: ::core::option::Option<Role>,
5075}
5076#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5078pub struct DeleteRoleRequest {
5079 #[prost(string, tag="1")]
5081 pub role_id: ::prost::alloc::string::String,
5082}
5083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5085pub struct DeleteRoleResponse {
5086}
5087#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5093pub struct SamlAttributeNames {
5094 #[prost(string, tag="1")]
5096 pub email: ::prost::alloc::string::String,
5097 #[prost(string, tag="2")]
5099 pub given_name: ::prost::alloc::string::String,
5100 #[prost(string, tag="3")]
5102 pub family_name: ::prost::alloc::string::String,
5103}
5104#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5106pub struct SsoProvider {
5107 #[prost(string, tag="1")]
5109 pub id: ::prost::alloc::string::String,
5110 #[prost(string, tag="2")]
5113 pub domain: ::prost::alloc::string::String,
5114 #[prost(enumeration="SsoProviderType", tag="3")]
5116 pub r#type: i32,
5117 #[prost(string, tag="4")]
5120 pub metadata_url: ::prost::alloc::string::String,
5121 #[prost(string, tag="5")]
5124 pub idp_provider_name: ::prost::alloc::string::String,
5125 #[prost(message, optional, tag="6")]
5127 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5128 #[prost(message, optional, tag="7")]
5130 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5131 #[prost(message, optional, tag="8")]
5133 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5134}
5135#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5138pub struct CheckSsoByDomainRequest {
5139 #[prost(string, tag="1")]
5142 pub email: ::prost::alloc::string::String,
5143}
5144#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5146pub struct CheckSsoByDomainResponse {
5147 #[prost(bool, tag="1")]
5149 pub sso_enabled: bool,
5150 #[prost(string, tag="2")]
5153 pub provider_name: ::prost::alloc::string::String,
5154}
5155#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5157pub struct CreateSsoProviderRequest {
5158 #[prost(string, tag="1")]
5161 pub domain: ::prost::alloc::string::String,
5162 #[prost(enumeration="SsoProviderType", tag="2")]
5164 pub r#type: i32,
5165 #[prost(string, tag="3")]
5168 pub metadata_url: ::prost::alloc::string::String,
5169 #[prost(message, optional, tag="4")]
5172 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5173}
5174#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5176pub struct CreateSsoProviderResponse {
5177 #[prost(message, optional, tag="1")]
5179 pub provider: ::core::option::Option<SsoProvider>,
5180}
5181#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5184pub struct GetSsoProviderRequest {
5185}
5186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5188pub struct GetSsoProviderResponse {
5189 #[prost(message, optional, tag="1")]
5191 pub provider: ::core::option::Option<SsoProvider>,
5192}
5193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5195pub struct DeleteSsoProviderRequest {
5196 #[prost(string, tag="1")]
5198 pub provider_id: ::prost::alloc::string::String,
5199}
5200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5202pub struct DeleteSsoProviderResponse {
5203}
5204#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5208#[repr(i32)]
5209pub enum SsoProviderType {
5210 Unspecified = 0,
5212 Saml = 1,
5214 Oidc = 2,
5216}
5217impl SsoProviderType {
5218 pub fn as_str_name(&self) -> &'static str {
5223 match self {
5224 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
5225 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
5226 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
5227 }
5228 }
5229 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5231 match value {
5232 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5233 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
5234 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
5235 _ => None,
5236 }
5237 }
5238}
5239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5245pub struct Team {
5246 #[prost(string, tag="1")]
5248 pub id: ::prost::alloc::string::String,
5249 #[prost(string, tag="2")]
5252 pub name: ::prost::alloc::string::String,
5253 #[prost(string, tag="3")]
5256 pub description: ::prost::alloc::string::String,
5257 #[prost(int32, tag="4")]
5259 pub member_count: i32,
5260 #[prost(message, optional, tag="5")]
5262 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5263 #[prost(message, optional, tag="6")]
5265 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5266 #[prost(bool, tag="7")]
5268 pub is_default: bool,
5269 #[prost(string, tag="8")]
5271 pub created_by: ::prost::alloc::string::String,
5272}
5273#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5275pub struct CreateTeamRequest {
5276 #[prost(string, tag="1")]
5279 pub name: ::prost::alloc::string::String,
5280 #[prost(string, tag="2")]
5283 pub description: ::prost::alloc::string::String,
5284}
5285#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5287pub struct CreateTeamResponse {
5288 #[prost(message, optional, tag="1")]
5290 pub team: ::core::option::Option<Team>,
5291}
5292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5294pub struct GetTeamRequest {
5295 #[prost(string, tag="1")]
5297 pub team_id: ::prost::alloc::string::String,
5298}
5299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5301pub struct GetTeamResponse {
5302 #[prost(message, optional, tag="1")]
5304 pub team: ::core::option::Option<Team>,
5305}
5306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5308pub struct ListTeamsRequest {
5309 #[prost(message, optional, tag="1")]
5311 pub pagination: ::core::option::Option<Pagination>,
5312}
5313#[derive(Clone, PartialEq, ::prost::Message)]
5315pub struct ListTeamsResponse {
5316 #[prost(message, repeated, tag="1")]
5318 pub teams: ::prost::alloc::vec::Vec<Team>,
5319 #[prost(message, optional, tag="2")]
5321 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5322}
5323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5325pub struct UpdateTeamRequest {
5326 #[prost(string, tag="1")]
5328 pub team_id: ::prost::alloc::string::String,
5329 #[prost(string, tag="2")]
5333 pub name: ::prost::alloc::string::String,
5334 #[prost(string, tag="3")]
5337 pub description: ::prost::alloc::string::String,
5338}
5339#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5341pub struct UpdateTeamResponse {
5342 #[prost(message, optional, tag="1")]
5344 pub team: ::core::option::Option<Team>,
5345}
5346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5348pub struct DeleteTeamRequest {
5349 #[prost(string, tag="1")]
5352 pub team_id: ::prost::alloc::string::String,
5353}
5354#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5356pub struct DeleteTeamResponse {
5357}
5358#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5360pub struct AddTeamMembersRequest {
5361 #[prost(string, tag="1")]
5363 pub team_id: ::prost::alloc::string::String,
5364 #[prost(string, repeated, tag="2")]
5368 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5369}
5370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5372pub struct AddTeamMembersResponse {
5373 #[prost(message, optional, tag="1")]
5375 pub team: ::core::option::Option<Team>,
5376}
5377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5379pub struct RemoveTeamMembersRequest {
5380 #[prost(string, tag="1")]
5382 pub team_id: ::prost::alloc::string::String,
5383 #[prost(string, repeated, tag="2")]
5386 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5387}
5388#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5390pub struct RemoveTeamMembersResponse {
5391 #[prost(message, optional, tag="1")]
5393 pub team: ::core::option::Option<Team>,
5394}
5395#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5397pub struct ListTeamMembersRequest {
5398 #[prost(string, tag="1")]
5400 pub team_id: ::prost::alloc::string::String,
5401 #[prost(message, optional, tag="2")]
5403 pub pagination: ::core::option::Option<Pagination>,
5404}
5405#[derive(Clone, PartialEq, ::prost::Message)]
5407pub struct ListTeamMembersResponse {
5408 #[prost(message, repeated, tag="1")]
5410 pub users: ::prost::alloc::vec::Vec<User>,
5411 #[prost(message, optional, tag="2")]
5413 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5414}
5415#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5419pub struct TemplateVariable {
5420 #[prost(string, tag="1")]
5423 pub name: ::prost::alloc::string::String,
5424 #[prost(string, tag="2")]
5427 pub description: ::prost::alloc::string::String,
5428 #[prost(bool, tag="3")]
5430 pub required: bool,
5431 #[prost(enumeration="TemplateVariableSource", tag="4")]
5433 pub source: i32,
5434 #[prost(string, tag="5")]
5437 pub default_value: ::prost::alloc::string::String,
5438 #[prost(bool, tag="6")]
5441 pub pii: bool,
5442}
5443#[derive(Clone, PartialEq, ::prost::Message)]
5446pub struct Template {
5447 #[prost(string, tag="1")]
5449 pub id: ::prost::alloc::string::String,
5450 #[prost(string, tag="2")]
5453 pub name: ::prost::alloc::string::String,
5454 #[prost(string, tag="3")]
5457 pub body: ::prost::alloc::string::String,
5458 #[prost(message, repeated, tag="4")]
5460 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5461 #[prost(int32, tag="5")]
5463 pub version: i32,
5464 #[prost(message, optional, tag="6")]
5466 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5467 #[prost(message, optional, tag="7")]
5469 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5470 #[prost(string, tag="8")]
5474 pub title: ::prost::alloc::string::String,
5475 #[prost(enumeration="TemplateType", tag="9")]
5478 pub r#type: i32,
5479 #[prost(string, tag="10")]
5483 pub source_locale: ::prost::alloc::string::String,
5484}
5485#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5488pub struct TemplateTranslation {
5489 #[prost(string, tag="1")]
5491 pub id: ::prost::alloc::string::String,
5492 #[prost(string, tag="2")]
5494 pub template_id: ::prost::alloc::string::String,
5495 #[prost(int32, tag="3")]
5497 pub version: i32,
5498 #[prost(string, tag="4")]
5500 pub locale: ::prost::alloc::string::String,
5501 #[prost(string, tag="5")]
5504 pub title: ::prost::alloc::string::String,
5505 #[prost(string, tag="6")]
5508 pub body: ::prost::alloc::string::String,
5509 #[prost(enumeration="TranslationStatus", tag="7")]
5511 pub status: i32,
5512 #[prost(string, tag="8")]
5514 pub translated_by: ::prost::alloc::string::String,
5515 #[prost(string, tag="9")]
5517 pub reviewed_by: ::prost::alloc::string::String,
5518 #[prost(message, optional, tag="10")]
5520 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5521 #[prost(message, optional, tag="11")]
5523 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5524}
5525#[derive(Clone, PartialEq, ::prost::Message)]
5527pub struct CreateTemplateRequest {
5528 #[prost(string, tag="1")]
5531 pub name: ::prost::alloc::string::String,
5532 #[prost(string, tag="2")]
5535 pub body: ::prost::alloc::string::String,
5536 #[prost(message, repeated, tag="3")]
5538 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5539 #[prost(string, tag="4")]
5542 pub title: ::prost::alloc::string::String,
5543 #[prost(enumeration="TemplateType", tag="5")]
5545 pub r#type: i32,
5546 #[prost(string, tag="6")]
5549 pub source_locale: ::prost::alloc::string::String,
5550}
5551#[derive(Clone, PartialEq, ::prost::Message)]
5553pub struct CreateTemplateResponse {
5554 #[prost(message, optional, tag="1")]
5556 pub template: ::core::option::Option<Template>,
5557}
5558#[derive(Clone, PartialEq, ::prost::Message)]
5560pub struct UpdateTemplateRequest {
5561 #[prost(string, tag="1")]
5563 pub template_id: ::prost::alloc::string::String,
5564 #[prost(string, tag="2")]
5567 pub body: ::prost::alloc::string::String,
5568 #[prost(message, repeated, tag="3")]
5570 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5571}
5572#[derive(Clone, PartialEq, ::prost::Message)]
5574pub struct UpdateTemplateResponse {
5575 #[prost(message, optional, tag="1")]
5577 pub template: ::core::option::Option<Template>,
5578}
5579#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5581pub struct GetTemplateRequest {
5582 #[prost(string, tag="1")]
5584 pub template_id: ::prost::alloc::string::String,
5585 #[prost(int32, tag="2")]
5587 pub version: i32,
5588}
5589#[derive(Clone, PartialEq, ::prost::Message)]
5591pub struct GetTemplateResponse {
5592 #[prost(message, optional, tag="1")]
5594 pub template: ::core::option::Option<Template>,
5595}
5596#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5598pub struct ListTemplatesRequest {
5599 #[prost(message, optional, tag="1")]
5601 pub pagination: ::core::option::Option<Pagination>,
5602 #[prost(enumeration="TemplateType", tag="2")]
5604 pub r#type: i32,
5605}
5606#[derive(Clone, PartialEq, ::prost::Message)]
5608pub struct ListTemplatesResponse {
5609 #[prost(message, repeated, tag="1")]
5611 pub templates: ::prost::alloc::vec::Vec<Template>,
5612 #[prost(message, optional, tag="2")]
5614 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5615}
5616#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5618pub struct CreateTemplateTranslationRequest {
5619 #[prost(string, tag="1")]
5621 pub template_id: ::prost::alloc::string::String,
5622 #[prost(int32, tag="2")]
5624 pub version: i32,
5625 #[prost(string, tag="3")]
5627 pub locale: ::prost::alloc::string::String,
5628 #[prost(string, tag="4")]
5630 pub title: ::prost::alloc::string::String,
5631 #[prost(string, tag="5")]
5633 pub body: ::prost::alloc::string::String,
5634 #[prost(string, tag="6")]
5636 pub translated_by: ::prost::alloc::string::String,
5637 #[prost(enumeration="TranslationStatus", tag="7")]
5639 pub status: i32,
5640}
5641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5643pub struct CreateTemplateTranslationResponse {
5644 #[prost(message, optional, tag="1")]
5646 pub translation: ::core::option::Option<TemplateTranslation>,
5647}
5648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5650pub struct UpdateTemplateTranslationRequest {
5651 #[prost(string, tag="1")]
5653 pub translation_id: ::prost::alloc::string::String,
5654 #[prost(string, tag="2")]
5656 pub title: ::prost::alloc::string::String,
5657 #[prost(string, tag="3")]
5659 pub body: ::prost::alloc::string::String,
5660 #[prost(enumeration="TranslationStatus", tag="4")]
5662 pub status: i32,
5663}
5664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5666pub struct UpdateTemplateTranslationResponse {
5667 #[prost(message, optional, tag="1")]
5669 pub translation: ::core::option::Option<TemplateTranslation>,
5670}
5671#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5673pub struct ListTemplateTranslationsRequest {
5674 #[prost(string, tag="1")]
5676 pub template_id: ::prost::alloc::string::String,
5677 #[prost(int32, tag="2")]
5679 pub version: i32,
5680}
5681#[derive(Clone, PartialEq, ::prost::Message)]
5683pub struct ListTemplateTranslationsResponse {
5684 #[prost(message, repeated, tag="1")]
5686 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
5687}
5688#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5690pub struct ApproveTemplateTranslationRequest {
5691 #[prost(string, tag="1")]
5693 pub translation_id: ::prost::alloc::string::String,
5694}
5695#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5697pub struct ApproveTemplateTranslationResponse {
5698 #[prost(message, optional, tag="1")]
5700 pub translation: ::core::option::Option<TemplateTranslation>,
5701}
5702#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5706#[repr(i32)]
5707pub enum TemplateType {
5708 Unspecified = 0,
5710 Markdown = 1,
5712 Rich = 2,
5714 Html = 3,
5716}
5717impl TemplateType {
5718 pub fn as_str_name(&self) -> &'static str {
5723 match self {
5724 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
5725 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
5726 Self::Rich => "TEMPLATE_TYPE_RICH",
5727 Self::Html => "TEMPLATE_TYPE_HTML",
5728 }
5729 }
5730 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5732 match value {
5733 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5734 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
5735 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
5736 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
5737 _ => None,
5738 }
5739 }
5740}
5741#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5743#[repr(i32)]
5744pub enum TemplateVariableSource {
5745 Unspecified = 0,
5747 Profile = 1,
5749 Custom = 2,
5751}
5752impl TemplateVariableSource {
5753 pub fn as_str_name(&self) -> &'static str {
5758 match self {
5759 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
5760 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
5761 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
5762 }
5763 }
5764 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5766 match value {
5767 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
5768 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
5769 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
5770 _ => None,
5771 }
5772 }
5773}
5774#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5776#[repr(i32)]
5777pub enum TranslationStatus {
5778 Unspecified = 0,
5779 Draft = 1,
5781 AiTranslated = 2,
5783 InReview = 3,
5785 Approved = 4,
5787}
5788impl TranslationStatus {
5789 pub fn as_str_name(&self) -> &'static str {
5794 match self {
5795 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
5796 Self::Draft => "TRANSLATION_STATUS_DRAFT",
5797 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
5798 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
5799 Self::Approved => "TRANSLATION_STATUS_APPROVED",
5800 }
5801 }
5802 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5804 match value {
5805 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5806 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
5807 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
5808 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
5809 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
5810 _ => None,
5811 }
5812 }
5813}
5814#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5819pub struct DeeplinkTokenPayload {
5820 #[prost(string, tag="1")]
5823 pub campaign_id: ::prost::alloc::string::String,
5824 #[prost(string, tag="2")]
5830 pub recipient_user_id: ::prost::alloc::string::String,
5831 #[prost(enumeration="ChannelStepKind", tag="3")]
5835 pub step_kind: i32,
5836 #[prost(message, optional, tag="4")]
5839 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5840}
5841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5842pub struct SignDeeplinkTokenRequest {
5843 #[prost(string, tag="1")]
5846 pub campaign_id: ::prost::alloc::string::String,
5847 #[prost(string, tag="2")]
5850 pub recipient_user_id: ::prost::alloc::string::String,
5851 #[prost(enumeration="ChannelStepKind", tag="3")]
5853 pub step_kind: i32,
5854 #[prost(int64, tag="4")]
5859 pub ttl_seconds: i64,
5860}
5861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5862pub struct SignDeeplinkTokenResponse {
5863 #[prost(string, tag="1")]
5869 pub token: ::prost::alloc::string::String,
5870 #[prost(message, optional, tag="2")]
5873 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5874 #[prost(int32, tag="3")]
5878 pub key_version: i32,
5879}
5880#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5881pub struct ValidateDeeplinkTokenRequest {
5882 #[prost(string, tag="1")]
5885 pub token: ::prost::alloc::string::String,
5886 #[prost(string, tag="2")]
5893 pub campaign_id: ::prost::alloc::string::String,
5894}
5895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5896pub struct ValidateDeeplinkTokenResponse {
5897 #[prost(bool, tag="1")]
5900 pub valid: bool,
5901 #[prost(enumeration="ValidationFailureReason", tag="2")]
5905 pub failure_reason: i32,
5906 #[prost(message, optional, tag="3")]
5910 pub payload: ::core::option::Option<DeeplinkTokenPayload>,
5911}
5912#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5916#[repr(i32)]
5917pub enum ValidationFailureReason {
5918 Unspecified = 0,
5919 InvalidSignature = 1,
5922 Expired = 2,
5924 KeyRetired = 3,
5930 Malformed = 4,
5934}
5935impl ValidationFailureReason {
5936 pub fn as_str_name(&self) -> &'static str {
5941 match self {
5942 Self::Unspecified => "VALIDATION_FAILURE_REASON_UNSPECIFIED",
5943 Self::InvalidSignature => "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE",
5944 Self::Expired => "VALIDATION_FAILURE_REASON_EXPIRED",
5945 Self::KeyRetired => "VALIDATION_FAILURE_REASON_KEY_RETIRED",
5946 Self::Malformed => "VALIDATION_FAILURE_REASON_MALFORMED",
5947 }
5948 }
5949 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5951 match value {
5952 "VALIDATION_FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
5953 "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE" => Some(Self::InvalidSignature),
5954 "VALIDATION_FAILURE_REASON_EXPIRED" => Some(Self::Expired),
5955 "VALIDATION_FAILURE_REASON_KEY_RETIRED" => Some(Self::KeyRetired),
5956 "VALIDATION_FAILURE_REASON_MALFORMED" => Some(Self::Malformed),
5957 _ => None,
5958 }
5959 }
5960}
5961include!("pidgr.v1.tonic.rs");
5962