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 PlatformSynthetic = 28,
750}
751impl Permission {
752 pub fn as_str_name(&self) -> &'static str {
757 match self {
758 Self::Unspecified => "PERMISSION_UNSPECIFIED",
759 Self::OrgRead => "PERMISSION_ORG_READ",
760 Self::OrgWrite => "PERMISSION_ORG_WRITE",
761 Self::MembersRead => "PERMISSION_MEMBERS_READ",
762 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
763 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
764 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
765 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
766 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
767 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
768 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
769 Self::InboxRead => "PERMISSION_INBOX_READ",
770 Self::InboxAct => "PERMISSION_INBOX_ACT",
771 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
772 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
773 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
774 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
775 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
776 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
777 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
778 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
779 Self::AuditRead => "PERMISSION_AUDIT_READ",
780 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
781 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
782 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
783 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
784 Self::PlatformAbuseResponse => "PERMISSION_PLATFORM_ABUSE_RESPONSE",
785 Self::PlatformComplianceWrite => "PERMISSION_PLATFORM_COMPLIANCE_WRITE",
786 Self::PlatformSynthetic => "PERMISSION_PLATFORM_SYNTHETIC",
787 }
788 }
789 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
791 match value {
792 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
793 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
794 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
795 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
796 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
797 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
798 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
799 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
800 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
801 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
802 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
803 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
804 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
805 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
806 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
807 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
808 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
809 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
810 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
811 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
812 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
813 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
814 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
815 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
816 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
817 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
818 "PERMISSION_PLATFORM_ABUSE_RESPONSE" => Some(Self::PlatformAbuseResponse),
819 "PERMISSION_PLATFORM_COMPLIANCE_WRITE" => Some(Self::PlatformComplianceWrite),
820 "PERMISSION_PLATFORM_SYNTHETIC" => Some(Self::PlatformSynthetic),
821 _ => None,
822 }
823 }
824}
825#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
827#[repr(i32)]
828pub enum ActionType {
829 Unspecified = 0,
831 Ack = 1,
833}
834impl ActionType {
835 pub fn as_str_name(&self) -> &'static str {
840 match self {
841 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
842 Self::Ack => "ACTION_TYPE_ACK",
843 }
844 }
845 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
847 match value {
848 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
849 "ACTION_TYPE_ACK" => Some(Self::Ack),
850 _ => None,
851 }
852 }
853}
854#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
856#[repr(i32)]
857pub enum StepType {
858 Unspecified = 0,
860 SendNotification = 1,
862 DeadlineCheck = 2,
864 SendReminder = 3,
866 CallWebhook = 4,
868 MarkMissed = 5,
870 Escalate = 6,
872}
873impl StepType {
874 pub fn as_str_name(&self) -> &'static str {
879 match self {
880 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
881 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
882 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
883 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
884 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
885 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
886 Self::Escalate => "STEP_TYPE_ESCALATE",
887 }
888 }
889 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
891 match value {
892 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
893 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
894 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
895 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
896 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
897 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
898 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
899 _ => None,
900 }
901 }
902}
903#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
905#[repr(i32)]
906pub enum EscalationCondition {
907 Unspecified = 0,
908 IfNotAcked = 1,
910 IfNotClosed = 2,
912}
913impl EscalationCondition {
914 pub fn as_str_name(&self) -> &'static str {
919 match self {
920 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
921 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
922 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
923 }
924 }
925 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
927 match value {
928 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
929 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
930 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
931 _ => None,
932 }
933 }
934}
935#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
937#[repr(i32)]
938pub enum EscalationTargetType {
939 Unspecified = 0,
940 User = 1,
942 Group = 2,
944 Manager = 3,
946 Role = 4,
948}
949impl EscalationTargetType {
950 pub fn as_str_name(&self) -> &'static str {
955 match self {
956 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
957 Self::User => "ESCALATION_TARGET_TYPE_USER",
958 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
959 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
960 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
961 }
962 }
963 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
965 match value {
966 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
967 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
968 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
969 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
970 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
971 _ => None,
972 }
973 }
974}
975#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
977#[repr(i32)]
978pub enum EscalateMode {
979 Unspecified = 0,
981 Deliver = 1,
983 AlertOnly = 2,
985}
986impl EscalateMode {
987 pub fn as_str_name(&self) -> &'static str {
992 match self {
993 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
994 Self::Deliver => "ESCALATE_MODE_DELIVER",
995 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
996 }
997 }
998 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1000 match value {
1001 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1002 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
1003 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
1004 _ => None,
1005 }
1006 }
1007}
1008#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1012pub struct ApiKey {
1013 #[prost(string, tag="1")]
1015 pub id: ::prost::alloc::string::String,
1016 #[prost(string, tag="2")]
1018 pub name: ::prost::alloc::string::String,
1019 #[prost(string, tag="3")]
1022 pub key_prefix: ::prost::alloc::string::String,
1023 #[prost(enumeration="Permission", repeated, tag="4")]
1025 pub permissions: ::prost::alloc::vec::Vec<i32>,
1026 #[prost(message, optional, tag="5")]
1028 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1029 #[prost(message, optional, tag="6")]
1031 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
1032 #[prost(message, optional, tag="7")]
1034 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1035 #[prost(enumeration="KeyType", tag="8")]
1038 pub key_type: i32,
1039}
1040#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1042pub struct CreateApiKeyRequest {
1043 #[prost(string, tag="1")]
1045 pub name: ::prost::alloc::string::String,
1046 #[prost(enumeration="Permission", repeated, tag="2")]
1049 pub permissions: ::prost::alloc::vec::Vec<i32>,
1050 #[prost(message, optional, tag="3")]
1052 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1053 #[prost(enumeration="KeyType", tag="4")]
1056 pub key_type: i32,
1057}
1058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1061pub struct CreateApiKeyResponse {
1062 #[prost(message, optional, tag="1")]
1064 pub api_key: ::core::option::Option<ApiKey>,
1065 #[prost(string, tag="2")]
1068 pub key: ::prost::alloc::string::String,
1069}
1070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1072pub struct ListApiKeysRequest {
1073 #[prost(enumeration="KeyType", tag="1")]
1075 pub key_type: i32,
1076}
1077#[derive(Clone, PartialEq, ::prost::Message)]
1079pub struct ListApiKeysResponse {
1080 #[prost(message, repeated, tag="1")]
1082 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
1083}
1084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1086pub struct RevokeApiKeyRequest {
1087 #[prost(string, tag="1")]
1089 pub api_key_id: ::prost::alloc::string::String,
1090}
1091#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1093pub struct RevokeApiKeyResponse {
1094}
1095#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1099#[repr(i32)]
1100pub enum KeyType {
1101 Unspecified = 0,
1102 ApiKey = 1,
1103 ScimToken = 2,
1104}
1105impl KeyType {
1106 pub fn as_str_name(&self) -> &'static str {
1111 match self {
1112 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
1113 Self::ApiKey => "KEY_TYPE_API_KEY",
1114 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
1115 }
1116 }
1117 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1119 match value {
1120 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1121 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
1122 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
1123 _ => None,
1124 }
1125 }
1126}
1127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1132pub struct ExportUserDataRequest {
1133 #[prost(string, tag="1")]
1136 pub user_id: ::prost::alloc::string::String,
1137}
1138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1140pub struct ExportUserDataResponse {
1141 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1143 pub status: i32,
1144 #[prost(string, tag="2")]
1147 pub result_url: ::prost::alloc::string::String,
1148 #[prost(string, tag="3")]
1151 pub export_id: ::prost::alloc::string::String,
1152}
1153#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1156pub struct DeleteUserDataRequest {
1157 #[prost(string, tag="1")]
1160 pub user_id: ::prost::alloc::string::String,
1161 #[prost(bool, tag="2")]
1164 pub anonymize: bool,
1165}
1166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1168pub struct DeleteUserDataResponse {
1169 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1171 pub status: i32,
1172 #[prost(message, optional, tag="2")]
1175 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
1176 #[prost(string, tag="3")]
1178 pub request_id: ::prost::alloc::string::String,
1179}
1180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1183pub struct ListPrivacyRequestsRequest {
1184 #[prost(int32, tag="1")]
1187 pub page_size: i32,
1188 #[prost(string, tag="2")]
1190 pub page_token: ::prost::alloc::string::String,
1191 #[prost(string, tag="3")]
1193 pub request_type: ::prost::alloc::string::String,
1194 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1196 pub status: i32,
1197}
1198#[derive(Clone, PartialEq, ::prost::Message)]
1200pub struct ListPrivacyRequestsResponse {
1201 #[prost(message, repeated, tag="1")]
1203 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1204 #[prost(string, tag="2")]
1206 pub next_page_token: ::prost::alloc::string::String,
1207}
1208#[derive(Clone, PartialEq, ::prost::Message)]
1210pub struct PrivacyRequest {
1211 #[prost(string, tag="1")]
1213 pub id: ::prost::alloc::string::String,
1214 #[prost(string, tag="2")]
1216 pub user_id: ::prost::alloc::string::String,
1217 #[prost(string, tag="3")]
1219 pub user_email: ::prost::alloc::string::String,
1220 #[prost(string, tag="4")]
1222 pub request_type: ::prost::alloc::string::String,
1223 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1225 pub status: i32,
1226 #[prost(bool, tag="6")]
1228 pub anonymize: bool,
1229 #[prost(string, tag="7")]
1231 pub requested_by_email: ::prost::alloc::string::String,
1232 #[prost(message, optional, tag="8")]
1234 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1235 #[prost(message, optional, tag="9")]
1237 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1238 #[prost(map="string, string", tag="10")]
1240 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1241}
1242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1245pub struct CancelDeletionRequest {
1246 #[prost(string, tag="1")]
1248 pub request_id: ::prost::alloc::string::String,
1249 #[prost(string, tag="2")]
1251 pub confirmation_email: ::prost::alloc::string::String,
1252}
1253#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1255pub struct CancelDeletionResponse {
1256 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1258 pub status: i32,
1259}
1260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1263pub struct ImmediateDeleteRequest {
1264 #[prost(string, tag="1")]
1266 pub request_id: ::prost::alloc::string::String,
1267 #[prost(string, tag="2")]
1269 pub confirmation_email: ::prost::alloc::string::String,
1270}
1271#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1273pub struct ImmediateDeleteResponse {
1274 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1276 pub status: i32,
1277}
1278#[derive(Clone, PartialEq, ::prost::Message)]
1281pub struct RectifyUserDataRequest {
1282 #[prost(string, tag="1")]
1285 pub user_id: ::prost::alloc::string::String,
1286 #[prost(map="string, string", tag="2")]
1290 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1291}
1292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1294pub struct RectifyUserDataResponse {
1295 #[prost(string, repeated, tag="1")]
1297 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1298}
1299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1302pub struct RestrictProcessingRequest {
1303 #[prost(string, tag="1")]
1306 pub user_id: ::prost::alloc::string::String,
1307 #[prost(bool, tag="2")]
1309 pub restricted: bool,
1310}
1311#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1313pub struct RestrictProcessingResponse {
1314 #[prost(bool, tag="1")]
1316 pub restricted: bool,
1317 #[prost(message, optional, tag="2")]
1319 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1320}
1321#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1325pub struct GetDataExistenceConfirmationRequest {
1326 #[prost(string, tag="1")]
1329 pub user_id: ::prost::alloc::string::String,
1330}
1331#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1333pub struct GetDataExistenceConfirmationResponse {
1334 #[prost(bool, tag="1")]
1336 pub exists: bool,
1337 #[prost(string, repeated, tag="2")]
1339 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1340}
1341#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1344pub struct ListMyPrivacyRequestsRequest {
1345 #[prost(int32, tag="1")]
1348 pub page_size: i32,
1349 #[prost(string, tag="2")]
1351 pub page_token: ::prost::alloc::string::String,
1352 #[prost(string, tag="3")]
1354 pub request_type: ::prost::alloc::string::String,
1355 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1357 pub status: i32,
1358}
1359#[derive(Clone, PartialEq, ::prost::Message)]
1361pub struct ListMyPrivacyRequestsResponse {
1362 #[prost(message, repeated, tag="1")]
1364 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1365 #[prost(string, tag="2")]
1367 pub next_page_token: ::prost::alloc::string::String,
1368}
1369#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1373#[repr(i32)]
1374pub enum PrivacyRequestStatus {
1375 Unspecified = 0,
1377 Pending = 1,
1379 Processing = 2,
1381 Completed = 3,
1383 Failed = 4,
1385}
1386impl PrivacyRequestStatus {
1387 pub fn as_str_name(&self) -> &'static str {
1392 match self {
1393 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1394 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1395 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1396 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1397 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1398 }
1399 }
1400 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1402 match value {
1403 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1404 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1405 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1406 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1407 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1408 _ => None,
1409 }
1410 }
1411}
1412#[derive(Clone, PartialEq, ::prost::Message)]
1417pub struct AuditEvent {
1418 #[prost(string, tag="1")]
1421 pub id: ::prost::alloc::string::String,
1422 #[prost(string, tag="2")]
1425 pub org_id: ::prost::alloc::string::String,
1426 #[prost(string, tag="3")]
1429 pub actor_id: ::prost::alloc::string::String,
1430 #[prost(enumeration="AuditEventType", tag="4")]
1432 pub event_type: i32,
1433 #[prost(string, tag="5")]
1436 pub entity_type: ::prost::alloc::string::String,
1437 #[prost(string, tag="6")]
1440 pub entity_id: ::prost::alloc::string::String,
1441 #[prost(map="string, string", tag="7")]
1444 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1445 #[prost(bool, tag="8")]
1449 pub synthetic: bool,
1450 #[prost(message, optional, tag="10")]
1452 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1453}
1454#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1457pub struct ListAuditEventsRequest {
1458 #[prost(string, tag="1")]
1460 pub page_token: ::prost::alloc::string::String,
1461 #[prost(int32, tag="2")]
1464 pub page_size: i32,
1465 #[prost(enumeration="AuditEventType", tag="3")]
1467 pub event_type: i32,
1468 #[prost(string, tag="4")]
1471 pub actor_id: ::prost::alloc::string::String,
1472 #[prost(message, optional, tag="5")]
1474 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1475 #[prost(message, optional, tag="6")]
1477 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1478}
1479#[derive(Clone, PartialEq, ::prost::Message)]
1481pub struct ListAuditEventsResponse {
1482 #[prost(message, repeated, tag="1")]
1484 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1485 #[prost(string, tag="2")]
1487 pub next_page_token: ::prost::alloc::string::String,
1488}
1489#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1492pub struct ExportAuditTrailRequest {
1493 #[prost(enumeration="AuditExportFormat", tag="1")]
1495 pub format: i32,
1496 #[prost(message, optional, tag="2")]
1498 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1499 #[prost(message, optional, tag="3")]
1501 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1502}
1503#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1505pub struct ExportAuditTrailResponse {
1506 #[prost(string, tag="1")]
1509 pub export_url: ::prost::alloc::string::String,
1510 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1512 pub status: i32,
1513}
1514#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1516pub struct AuditExport {
1517 #[prost(string, tag="1")]
1519 pub id: ::prost::alloc::string::String,
1520 #[prost(string, tag="2")]
1522 pub format: ::prost::alloc::string::String,
1523 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1525 pub status: i32,
1526 #[prost(string, tag="4")]
1528 pub result_url: ::prost::alloc::string::String,
1529 #[prost(string, tag="5")]
1531 pub error_message: ::prost::alloc::string::String,
1532 #[prost(string, tag="6")]
1534 pub requested_by_email: ::prost::alloc::string::String,
1535 #[prost(message, optional, tag="7")]
1537 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1538 #[prost(message, optional, tag="8")]
1540 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1541}
1542#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1545pub struct ListAuditExportsRequest {
1546}
1547#[derive(Clone, PartialEq, ::prost::Message)]
1549pub struct ListAuditExportsResponse {
1550 #[prost(message, repeated, tag="1")]
1552 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1553}
1554#[derive(Clone, PartialEq, ::prost::Message)]
1562pub struct AppendRequest {
1563 #[prost(string, tag="1")]
1569 pub event_type: ::prost::alloc::string::String,
1570 #[prost(string, tag="2")]
1572 pub org_id: ::prost::alloc::string::String,
1573 #[prost(string, optional, tag="3")]
1576 pub subject_user_id: ::core::option::Option<::prost::alloc::string::String>,
1577 #[prost(string, optional, tag="4")]
1580 pub actor_id: ::core::option::Option<::prost::alloc::string::String>,
1581 #[prost(message, optional, tag="5")]
1589 pub details: ::core::option::Option<::prost_types::Struct>,
1590}
1591#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1592pub struct AppendResponse {
1593 #[prost(string, tag="1")]
1595 pub event_id: ::prost::alloc::string::String,
1596}
1597#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1601#[repr(i32)]
1602pub enum AuditEventType {
1603 Unspecified = 0,
1605 CampaignCreated = 1,
1608 MessageSent = 2,
1610 MessageOpened = 3,
1612 AckRegistered = 4,
1614 EscalationExecuted = 5,
1616 CampaignStarted = 12,
1618 CampaignCancelled = 13,
1620 CampaignUpdated = 14,
1622 UserInvited = 6,
1625 UserDeactivated = 7,
1627 UserReactivated = 15,
1629 RoleChanged = 10,
1631 InviteRevoked = 16,
1633 ProfileUpdated = 17,
1635 SettingsUpdated = 18,
1637 PasskeyEnrolled = 19,
1639 DataExportRequested = 8,
1642 DataDeletionRequested = 9,
1644 DataRectified = 20,
1646 ProcessingRestricted = 21,
1648 DeletionCancelled = 22,
1650 DeletionImmediate = 23,
1652 SsoConfigured = 11,
1655 SsoProviderCreated = 24,
1657 SsoProviderDeleted = 25,
1659 OrgUpdated = 26,
1661 RoleCreated = 27,
1664 RoleUpdated = 28,
1666 RoleDeleted = 29,
1668 TemplateCreated = 30,
1671 TemplateUpdated = 31,
1673 ApiKeyCreated = 32,
1676 ApiKeyRevoked = 33,
1678 InviteLinkCreated = 34,
1681 InviteLinkRevoked = 35,
1683 GroupCreated = 36,
1686 GroupUpdated = 37,
1688 GroupDeleted = 38,
1690 GroupMembersAdded = 39,
1692 GroupMembersRemoved = 40,
1694 TeamCreated = 41,
1697 TeamUpdated = 42,
1699 TeamDeleted = 43,
1701 TeamMembersAdded = 44,
1703 TeamMembersRemoved = 45,
1705 ScimUserProvisioned = 46,
1708 ScimUserDeprovisioned = 47,
1710 ScimUserUpdated = 48,
1712 TranslationCreated = 49,
1715 TranslationApproved = 50,
1717 SandboxCreated = 51,
1720 SandboxExpired = 52,
1722 AiPredictionLogged = 53,
1725 MlPipelineTriggered = 54,
1727 ArchetypeClusteringTriggered = 55,
1729 OrgCreated = 56,
1732 OrgDeleted = 57,
1734 ReachabilityUpsert = 58,
1738 ReachabilityRemove = 59,
1741}
1742impl AuditEventType {
1743 pub fn as_str_name(&self) -> &'static str {
1748 match self {
1749 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1750 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1751 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1752 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1753 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1754 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1755 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1756 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1757 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1758 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1759 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1760 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1761 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1762 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1763 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1764 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1765 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1766 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1767 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1768 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1769 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1770 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1771 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1772 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1773 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1774 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1775 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1776 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1777 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1778 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1779 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1780 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1781 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1782 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1783 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1784 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1785 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1786 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1787 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1788 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1789 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1790 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1791 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1792 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1793 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1794 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1795 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1796 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1797 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1798 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1799 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1800 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1801 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1802 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1803 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1804 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1805 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1806 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1807 Self::ReachabilityUpsert => "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT",
1808 Self::ReachabilityRemove => "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE",
1809 }
1810 }
1811 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1813 match value {
1814 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1815 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1816 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1817 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1818 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1819 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1820 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1821 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1822 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
1823 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
1824 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
1825 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
1826 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
1827 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
1828 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
1829 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
1830 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
1831 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
1832 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
1833 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
1834 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
1835 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
1836 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
1837 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
1838 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
1839 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
1840 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
1841 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
1842 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
1843 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
1844 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
1845 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
1846 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
1847 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
1848 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
1849 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
1850 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
1851 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
1852 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
1853 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
1854 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
1855 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
1856 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
1857 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
1858 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
1859 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
1860 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
1861 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
1862 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
1863 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
1864 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
1865 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
1866 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
1867 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
1868 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
1869 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
1870 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
1871 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
1872 "AUDIT_EVENT_TYPE_REACHABILITY_UPSERT" => Some(Self::ReachabilityUpsert),
1873 "AUDIT_EVENT_TYPE_REACHABILITY_REMOVE" => Some(Self::ReachabilityRemove),
1874 _ => None,
1875 }
1876 }
1877}
1878#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1880#[repr(i32)]
1881pub enum AuditExportFormat {
1882 Unspecified = 0,
1884 Csv = 1,
1886 Json = 2,
1888 Parquet = 3,
1890}
1891impl AuditExportFormat {
1892 pub fn as_str_name(&self) -> &'static str {
1897 match self {
1898 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
1899 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
1900 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
1901 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
1902 }
1903 }
1904 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1906 match value {
1907 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1908 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
1909 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
1910 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
1911 _ => None,
1912 }
1913 }
1914}
1915#[derive(Clone, PartialEq, ::prost::Message)]
1920pub struct Campaign {
1921 #[prost(string, tag="1")]
1924 pub id: ::prost::alloc::string::String,
1925 #[prost(string, tag="2")]
1928 pub name: ::prost::alloc::string::String,
1929 #[prost(string, tag="3")]
1932 pub template_id: ::prost::alloc::string::String,
1933 #[prost(int32, tag="4")]
1935 pub template_version: i32,
1936 #[prost(string, tag="5")]
1938 pub audience_snapshot_ref: ::prost::alloc::string::String,
1939 #[prost(enumeration="CampaignStatus", tag="6")]
1941 pub status: i32,
1942 #[prost(message, optional, tag="7")]
1944 pub workflow: ::core::option::Option<WorkflowDefinition>,
1945 #[prost(int32, tag="8")]
1947 pub total_recipients: i32,
1948 #[prost(int32, tag="9")]
1950 pub action_completed_count: i32,
1951 #[prost(int32, tag="10")]
1953 pub missed_count: i32,
1954 #[prost(message, optional, tag="11")]
1956 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1957 #[prost(message, optional, tag="12")]
1959 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
1960 #[prost(message, optional, tag="13")]
1962 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1963 #[prost(string, tag="14")]
1966 pub sender_name: ::prost::alloc::string::String,
1967 #[prost(string, tag="15")]
1970 pub title: ::prost::alloc::string::String,
1971 #[prost(bool, tag="16")]
1973 pub critical: bool,
1974 #[prost(string, tag="17")]
1979 pub default_locale: ::prost::alloc::string::String,
1980 #[prost(bool, tag="18")]
1984 pub wait_for_enrollment: bool,
1985 #[prost(message, optional, tag="19")]
1988 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
1989 #[prost(bool, tag="20")]
1992 pub synthetic: bool,
1993}
1994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1999pub struct CampaignOriginatingArchetype {
2000 #[prost(string, tag="1")]
2002 pub group_id: ::prost::alloc::string::String,
2003 #[prost(string, tag="2")]
2006 pub archetype_label: ::prost::alloc::string::String,
2007}
2008#[derive(Clone, PartialEq, ::prost::Message)]
2010pub struct AudienceMember {
2011 #[prost(string, tag="1")]
2013 pub user_id: ::prost::alloc::string::String,
2014 #[prost(map="string, string", tag="2")]
2016 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2017}
2018#[derive(Clone, PartialEq, ::prost::Message)]
2020pub struct CreateCampaignRequest {
2021 #[prost(string, tag="1")]
2024 pub name: ::prost::alloc::string::String,
2025 #[prost(string, tag="2")]
2028 pub template_id: ::prost::alloc::string::String,
2029 #[prost(int32, tag="3")]
2031 pub template_version: i32,
2032 #[prost(string, repeated, tag="4")]
2035 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2036 #[prost(message, optional, tag="5")]
2041 pub workflow: ::core::option::Option<WorkflowDefinition>,
2042 #[prost(string, tag="6")]
2045 pub sender_name: ::prost::alloc::string::String,
2046 #[prost(string, tag="7")]
2049 pub title: ::prost::alloc::string::String,
2050 #[prost(message, repeated, tag="8")]
2054 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
2055 #[prost(bool, tag="9")]
2058 pub include_restricted: bool,
2059 #[prost(bool, tag="10")]
2061 pub critical: bool,
2062 #[prost(string, tag="11")]
2064 pub default_locale: ::prost::alloc::string::String,
2065 #[prost(bool, tag="12")]
2069 pub wait_for_enrollment: bool,
2070 #[prost(message, optional, tag="13")]
2075 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2076}
2077#[derive(Clone, PartialEq, ::prost::Message)]
2079pub struct CreateCampaignResponse {
2080 #[prost(message, optional, tag="1")]
2082 pub campaign: ::core::option::Option<Campaign>,
2083}
2084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2086pub struct StartCampaignRequest {
2087 #[prost(string, tag="1")]
2090 pub campaign_id: ::prost::alloc::string::String,
2091}
2092#[derive(Clone, PartialEq, ::prost::Message)]
2094pub struct StartCampaignResponse {
2095 #[prost(message, optional, tag="1")]
2097 pub campaign: ::core::option::Option<Campaign>,
2098}
2099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2101pub struct GetCampaignRequest {
2102 #[prost(string, tag="1")]
2105 pub campaign_id: ::prost::alloc::string::String,
2106}
2107#[derive(Clone, PartialEq, ::prost::Message)]
2109pub struct GetCampaignResponse {
2110 #[prost(message, optional, tag="1")]
2112 pub campaign: ::core::option::Option<Campaign>,
2113}
2114#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2116pub struct ListCampaignsRequest {
2117 #[prost(message, optional, tag="1")]
2119 pub pagination: ::core::option::Option<Pagination>,
2120}
2121#[derive(Clone, PartialEq, ::prost::Message)]
2123pub struct ListCampaignsResponse {
2124 #[prost(message, repeated, tag="1")]
2126 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
2127 #[prost(message, optional, tag="2")]
2129 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2130}
2131#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2133pub struct CancelCampaignRequest {
2134 #[prost(string, tag="1")]
2137 pub campaign_id: ::prost::alloc::string::String,
2138}
2139#[derive(Clone, PartialEq, ::prost::Message)]
2141pub struct CancelCampaignResponse {
2142 #[prost(message, optional, tag="1")]
2144 pub campaign: ::core::option::Option<Campaign>,
2145}
2146#[derive(Clone, PartialEq, ::prost::Message)]
2149pub struct UpdateCampaignRequest {
2150 #[prost(string, tag="1")]
2153 pub campaign_id: ::prost::alloc::string::String,
2154 #[prost(string, tag="2")]
2157 pub name: ::prost::alloc::string::String,
2158 #[prost(string, tag="3")]
2161 pub sender_name: ::prost::alloc::string::String,
2162 #[prost(string, tag="4")]
2165 pub title: ::prost::alloc::string::String,
2166 #[prost(string, tag="5")]
2169 pub template_id: ::prost::alloc::string::String,
2170 #[prost(int32, tag="6")]
2172 pub template_version: i32,
2173 #[prost(message, optional, tag="7")]
2175 pub workflow: ::core::option::Option<WorkflowDefinition>,
2176}
2177#[derive(Clone, PartialEq, ::prost::Message)]
2179pub struct UpdateCampaignResponse {
2180 #[prost(message, optional, tag="1")]
2182 pub campaign: ::core::option::Option<Campaign>,
2183}
2184#[derive(Clone, PartialEq, ::prost::Message)]
2191pub struct DeliveryMetadata {
2192 #[prost(message, optional, tag="1")]
2196 pub original_message: ::core::option::Option<Message>,
2197 #[prost(string, tag="2")]
2200 pub original_recipient_name: ::prost::alloc::string::String,
2201 #[prost(string, tag="3")]
2204 pub campaign_title: ::prost::alloc::string::String,
2205 #[prost(message, optional, tag="4")]
2208 pub reminder_fired_at: ::core::option::Option<::prost_types::Timestamp>,
2209}
2210#[derive(Clone, PartialEq, ::prost::Message)]
2211pub struct Delivery {
2212 #[prost(string, tag="1")]
2215 pub id: ::prost::alloc::string::String,
2216 #[prost(string, tag="2")]
2219 pub user_id: ::prost::alloc::string::String,
2220 #[prost(string, tag="3")]
2223 pub campaign_id: ::prost::alloc::string::String,
2224 #[prost(enumeration="DeliveryStatus", tag="4")]
2226 pub status: i32,
2227 #[prost(message, optional, tag="5")]
2229 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
2230 #[prost(message, optional, tag="6")]
2232 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
2233 #[prost(message, optional, tag="7")]
2235 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
2236 #[prost(string, tag="8")]
2238 pub recipient_email: ::prost::alloc::string::String,
2239 #[prost(enumeration="delivery::Kind", tag="12")]
2242 pub kind: i32,
2243 #[prost(string, tag="13")]
2247 pub parent_delivery_id: ::prost::alloc::string::String,
2248 #[prost(string, tag="14")]
2252 pub rendered_locale: ::prost::alloc::string::String,
2253 #[prost(message, optional, tag="15")]
2257 pub metadata: ::core::option::Option<DeliveryMetadata>,
2258 #[prost(bool, tag="9")]
2261 pub synthetic: bool,
2262}
2263pub mod delivery {
2265 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2267 #[repr(i32)]
2268 pub enum Kind {
2269 Unspecified = 0,
2271 Primary = 1,
2273 Escalation = 2,
2275 ReminderFyi = 3,
2280 }
2281 impl Kind {
2282 pub fn as_str_name(&self) -> &'static str {
2287 match self {
2288 Self::Unspecified => "KIND_UNSPECIFIED",
2289 Self::Primary => "KIND_PRIMARY",
2290 Self::Escalation => "KIND_ESCALATION",
2291 Self::ReminderFyi => "KIND_REMINDER_FYI",
2292 }
2293 }
2294 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2296 match value {
2297 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
2298 "KIND_PRIMARY" => Some(Self::Primary),
2299 "KIND_ESCALATION" => Some(Self::Escalation),
2300 "KIND_REMINDER_FYI" => Some(Self::ReminderFyi),
2301 _ => None,
2302 }
2303 }
2304 }
2305}
2306#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2308pub struct ListDeliveriesRequest {
2309 #[prost(string, tag="1")]
2312 pub campaign_id: ::prost::alloc::string::String,
2313 #[prost(enumeration="DeliveryStatus", tag="2")]
2315 pub status_filter: i32,
2316 #[prost(message, optional, tag="3")]
2318 pub pagination: ::core::option::Option<Pagination>,
2319}
2320#[derive(Clone, PartialEq, ::prost::Message)]
2322pub struct ListDeliveriesResponse {
2323 #[prost(message, repeated, tag="1")]
2325 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2326 #[prost(message, optional, tag="2")]
2328 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2329}
2330#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2335pub struct GetCampaignArchetypeBreakdownRequest {
2336 #[prost(string, tag="1")]
2339 pub campaign_id: ::prost::alloc::string::String,
2340}
2341#[derive(Clone, PartialEq, ::prost::Message)]
2346pub struct ArchetypeShareShift {
2347 #[prost(string, tag="1")]
2349 pub label: ::prost::alloc::string::String,
2350 #[prost(double, tag="2")]
2353 pub share_before: f64,
2354 #[prost(double, tag="3")]
2357 pub share_after: f64,
2358 #[prost(bool, tag="4")]
2361 pub is_origin: bool,
2362 #[prost(uint64, tag="5")]
2365 pub email_delivered_count: u64,
2366 #[prost(double, tag="6")]
2369 pub email_open_rate_real: f64,
2370 #[prost(double, tag="7")]
2373 pub email_open_rate_raw: f64,
2374}
2375#[derive(Clone, PartialEq, ::prost::Message)]
2380pub struct GetCampaignArchetypeBreakdownResponse {
2381 #[prost(message, repeated, tag="1")]
2384 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2385 #[prost(message, optional, tag="2")]
2388 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2389 #[prost(message, optional, tag="3")]
2391 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2392 #[prost(bool, tag="4")]
2396 pub insufficient_history: bool,
2397}
2398#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2405pub struct ResolveOrCreateShortCodeRequest {
2406 #[prost(string, tag="1")]
2409 pub campaign_id: ::prost::alloc::string::String,
2410}
2411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2415pub struct ResolveOrCreateShortCodeResponse {
2416 #[prost(string, tag="1")]
2418 pub short_code: ::prost::alloc::string::String,
2419}
2420#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2427pub struct GetCampaignByShortCodeRequest {
2428 #[prost(string, tag="1")]
2431 pub short_code: ::prost::alloc::string::String,
2432}
2433#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2440pub struct GetCampaignByShortCodeResponse {
2441 #[prost(string, tag="1")]
2444 pub campaign_id: ::prost::alloc::string::String,
2445 #[prost(string, tag="2")]
2448 pub org_id: ::prost::alloc::string::String,
2449 #[prost(string, tag="3")]
2453 pub organization_name: ::prost::alloc::string::String,
2454 #[prost(string, tag="4")]
2458 pub subject: ::prost::alloc::string::String,
2459}
2460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2465pub struct Device {
2466 #[prost(string, tag="1")]
2469 pub device_id: ::prost::alloc::string::String,
2470 #[prost(string, tag="2")]
2473 pub user_id: ::prost::alloc::string::String,
2474 #[prost(enumeration="Platform", tag="3")]
2476 pub platform: i32,
2477 #[prost(string, tag="4")]
2479 pub push_token: ::prost::alloc::string::String,
2480 #[prost(bool, tag="5")]
2482 pub active: bool,
2483 #[prost(message, optional, tag="6")]
2485 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2486 #[prost(message, optional, tag="7")]
2488 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2489}
2490#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2492pub struct DeviceSummary {
2493 #[prost(string, tag="1")]
2495 pub device_id: ::prost::alloc::string::String,
2496 #[prost(string, tag="2")]
2498 pub user_id: ::prost::alloc::string::String,
2499 #[prost(enumeration="Platform", tag="3")]
2501 pub platform: i32,
2502 #[prost(bool, tag="4")]
2504 pub active: bool,
2505 #[prost(message, optional, tag="5")]
2507 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2508 #[prost(message, optional, tag="6")]
2510 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2511}
2512#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2514pub struct RegisterRequest {
2515 #[prost(string, tag="1")]
2518 pub device_id: ::prost::alloc::string::String,
2519 #[prost(enumeration="Platform", tag="2")]
2521 pub platform: i32,
2522 #[prost(string, tag="3")]
2525 pub push_token: ::prost::alloc::string::String,
2526}
2527#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2529pub struct RegisterResponse {
2530 #[prost(message, optional, tag="1")]
2532 pub device: ::core::option::Option<DeviceSummary>,
2533}
2534#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2536pub struct DeactivateRequest {
2537 #[prost(string, tag="1")]
2540 pub device_id: ::prost::alloc::string::String,
2541}
2542#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2544pub struct DeactivateResponse {
2545 #[prost(bool, tag="1")]
2547 pub success: bool,
2548}
2549#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2551pub struct ListDevicesRequest {
2552}
2553#[derive(Clone, PartialEq, ::prost::Message)]
2555pub struct ListDevicesResponse {
2556 #[prost(message, repeated, tag="1")]
2558 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2559}
2560#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2562pub struct ListMemberDevicesRequest {
2563 #[prost(string, tag="1")]
2566 pub user_id: ::prost::alloc::string::String,
2567}
2568#[derive(Clone, PartialEq, ::prost::Message)]
2570pub struct ListMemberDevicesResponse {
2571 #[prost(message, repeated, tag="1")]
2573 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2574}
2575#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2580pub struct UserSettings {
2581 #[prost(enumeration="ThemePreference", tag="1")]
2583 pub theme_preference: i32,
2584 #[prost(string, tag="2")]
2588 pub preferred_locale: ::prost::alloc::string::String,
2589}
2590#[derive(Clone, PartialEq, ::prost::Message)]
2593pub struct UserProfile {
2594 #[prost(string, tag="1")]
2597 pub first_name: ::prost::alloc::string::String,
2598 #[prost(string, tag="2")]
2601 pub last_name: ::prost::alloc::string::String,
2602 #[prost(string, tag="3")]
2605 pub department: ::prost::alloc::string::String,
2606 #[prost(string, tag="4")]
2609 pub title: ::prost::alloc::string::String,
2610 #[prost(string, tag="5")]
2613 pub phone: ::prost::alloc::string::String,
2614 #[prost(string, tag="6")]
2617 pub location: ::prost::alloc::string::String,
2618 #[prost(string, tag="7")]
2621 pub employee_id: ::prost::alloc::string::String,
2622 #[prost(string, tag="8")]
2625 pub manager_name: ::prost::alloc::string::String,
2626 #[prost(string, tag="9")]
2629 pub start_date: ::prost::alloc::string::String,
2630 #[prost(map="string, string", tag="10")]
2633 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2634 #[prost(string, tag="11")]
2638 pub manager_id: ::prost::alloc::string::String,
2639}
2640#[derive(Clone, PartialEq, ::prost::Message)]
2642pub struct User {
2643 #[prost(string, tag="1")]
2645 pub id: ::prost::alloc::string::String,
2646 #[prost(string, tag="2")]
2649 pub email: ::prost::alloc::string::String,
2650 #[prost(string, tag="3")]
2653 pub name: ::prost::alloc::string::String,
2654 #[prost(enumeration="UserStatus", tag="5")]
2656 pub status: i32,
2657 #[prost(message, optional, tag="6")]
2659 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2660 #[prost(message, optional, tag="7")]
2662 pub role: ::core::option::Option<Role>,
2663 #[prost(string, tag="8")]
2665 pub role_id: ::prost::alloc::string::String,
2666 #[prost(message, optional, tag="9")]
2669 pub profile: ::core::option::Option<UserProfile>,
2670 #[prost(bool, tag="10")]
2673 pub processing_restricted: bool,
2674 #[prost(string, tag="11")]
2677 pub data_governance_region: ::prost::alloc::string::String,
2678}
2679#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2683#[repr(i32)]
2684pub enum UserStatus {
2685 Unspecified = 0,
2687 Invited = 1,
2689 Active = 2,
2691 Deactivated = 3,
2693}
2694impl UserStatus {
2695 pub fn as_str_name(&self) -> &'static str {
2700 match self {
2701 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2702 Self::Invited => "USER_STATUS_INVITED",
2703 Self::Active => "USER_STATUS_ACTIVE",
2704 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2705 }
2706 }
2707 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2709 match value {
2710 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2711 "USER_STATUS_INVITED" => Some(Self::Invited),
2712 "USER_STATUS_ACTIVE" => Some(Self::Active),
2713 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2714 _ => None,
2715 }
2716 }
2717}
2718#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2720#[repr(i32)]
2721pub enum ThemePreference {
2722 Unspecified = 0,
2724 Light = 1,
2726 Dark = 2,
2728 System = 3,
2730}
2731impl ThemePreference {
2732 pub fn as_str_name(&self) -> &'static str {
2737 match self {
2738 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2739 Self::Light => "THEME_PREFERENCE_LIGHT",
2740 Self::Dark => "THEME_PREFERENCE_DARK",
2741 Self::System => "THEME_PREFERENCE_SYSTEM",
2742 }
2743 }
2744 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2746 match value {
2747 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2748 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2749 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2750 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2751 _ => None,
2752 }
2753 }
2754}
2755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2760pub struct Group {
2761 #[prost(string, tag="1")]
2763 pub id: ::prost::alloc::string::String,
2764 #[prost(string, tag="2")]
2767 pub name: ::prost::alloc::string::String,
2768 #[prost(string, tag="3")]
2771 pub description: ::prost::alloc::string::String,
2772 #[prost(int32, tag="4")]
2774 pub member_count: i32,
2775 #[prost(message, optional, tag="5")]
2777 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2778 #[prost(message, optional, tag="6")]
2780 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2781 #[prost(bool, tag="7")]
2783 pub is_default: bool,
2784 #[prost(string, tag="8")]
2786 pub created_by: ::prost::alloc::string::String,
2787}
2788#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2790pub struct CreateGroupRequest {
2791 #[prost(string, tag="1")]
2794 pub name: ::prost::alloc::string::String,
2795 #[prost(string, tag="2")]
2798 pub description: ::prost::alloc::string::String,
2799}
2800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2802pub struct CreateGroupResponse {
2803 #[prost(message, optional, tag="1")]
2805 pub group: ::core::option::Option<Group>,
2806}
2807#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2809pub struct GetGroupRequest {
2810 #[prost(string, tag="1")]
2812 pub group_id: ::prost::alloc::string::String,
2813}
2814#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2816pub struct GetGroupResponse {
2817 #[prost(message, optional, tag="1")]
2819 pub group: ::core::option::Option<Group>,
2820}
2821#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2823pub struct ListGroupsRequest {
2824 #[prost(message, optional, tag="1")]
2826 pub pagination: ::core::option::Option<Pagination>,
2827}
2828#[derive(Clone, PartialEq, ::prost::Message)]
2830pub struct ListGroupsResponse {
2831 #[prost(message, repeated, tag="1")]
2833 pub groups: ::prost::alloc::vec::Vec<Group>,
2834 #[prost(message, optional, tag="2")]
2836 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2837}
2838#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2840pub struct UpdateGroupRequest {
2841 #[prost(string, tag="1")]
2843 pub group_id: ::prost::alloc::string::String,
2844 #[prost(string, tag="2")]
2848 pub name: ::prost::alloc::string::String,
2849 #[prost(string, tag="3")]
2852 pub description: ::prost::alloc::string::String,
2853}
2854#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2856pub struct UpdateGroupResponse {
2857 #[prost(message, optional, tag="1")]
2859 pub group: ::core::option::Option<Group>,
2860}
2861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2863pub struct DeleteGroupRequest {
2864 #[prost(string, tag="1")]
2867 pub group_id: ::prost::alloc::string::String,
2868}
2869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2871pub struct DeleteGroupResponse {
2872}
2873#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2875pub struct AddGroupMembersRequest {
2876 #[prost(string, tag="1")]
2878 pub group_id: ::prost::alloc::string::String,
2879 #[prost(string, repeated, tag="2")]
2883 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2884}
2885#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2887pub struct AddGroupMembersResponse {
2888 #[prost(message, optional, tag="1")]
2890 pub group: ::core::option::Option<Group>,
2891}
2892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2894pub struct RemoveGroupMembersRequest {
2895 #[prost(string, tag="1")]
2897 pub group_id: ::prost::alloc::string::String,
2898 #[prost(string, repeated, tag="2")]
2901 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2902}
2903#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2905pub struct RemoveGroupMembersResponse {
2906 #[prost(message, optional, tag="1")]
2908 pub group: ::core::option::Option<Group>,
2909}
2910#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2912pub struct ListGroupMembersRequest {
2913 #[prost(string, tag="1")]
2915 pub group_id: ::prost::alloc::string::String,
2916 #[prost(message, optional, tag="2")]
2918 pub pagination: ::core::option::Option<Pagination>,
2919}
2920#[derive(Clone, PartialEq, ::prost::Message)]
2922pub struct ListGroupMembersResponse {
2923 #[prost(message, repeated, tag="1")]
2925 pub users: ::prost::alloc::vec::Vec<User>,
2926 #[prost(message, optional, tag="2")]
2928 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2929}
2930#[derive(Clone, PartialEq, ::prost::Message)]
2932pub struct UserGroupMembership {
2933 #[prost(string, tag="1")]
2935 pub user_id: ::prost::alloc::string::String,
2936 #[prost(message, repeated, tag="2")]
2938 pub groups: ::prost::alloc::vec::Vec<Group>,
2939}
2940#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2942pub struct GetUserGroupMembershipsRequest {
2943 #[prost(string, repeated, tag="1")]
2946 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2947}
2948#[derive(Clone, PartialEq, ::prost::Message)]
2950pub struct GetUserGroupMembershipsResponse {
2951 #[prost(message, repeated, tag="1")]
2953 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
2954}
2955#[derive(Clone, PartialEq, ::prost::Message)]
2959pub struct TouchEvent {
2960 #[prost(string, tag="1")]
2963 pub screen_name: ::prost::alloc::string::String,
2964 #[prost(float, tag="2")]
2967 pub x_pct: f32,
2968 #[prost(float, tag="3")]
2971 pub y_pct: f32,
2972 #[prost(enumeration="TouchEventType", tag="4")]
2974 pub event_type: i32,
2975 #[prost(int32, tag="5")]
2977 pub screen_width: i32,
2978 #[prost(int32, tag="6")]
2980 pub screen_height: i32,
2981 #[prost(message, optional, tag="7")]
2983 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
2984 #[prost(string, tag="8")]
2987 pub campaign_id: ::prost::alloc::string::String,
2988}
2989#[derive(Clone, PartialEq, ::prost::Message)]
2991pub struct IngestTouchEventsRequest {
2992 #[prost(message, repeated, tag="1")]
2995 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
2996}
2997#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2999pub struct IngestTouchEventsResponse {
3000 #[prost(int32, tag="1")]
3002 pub ingested_count: i32,
3003}
3004#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3006pub struct HeatmapDataPoint {
3007 #[prost(float, tag="1")]
3009 pub x_pct: f32,
3010 #[prost(float, tag="2")]
3012 pub y_pct: f32,
3013 #[prost(float, tag="3")]
3015 pub value: f32,
3016}
3017#[derive(Clone, PartialEq, ::prost::Message)]
3019pub struct QueryHeatmapDataRequest {
3020 #[prost(string, tag="1")]
3023 pub screen_name: ::prost::alloc::string::String,
3024 #[prost(message, optional, tag="2")]
3026 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
3027 #[prost(message, optional, tag="3")]
3029 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
3030 #[prost(string, tag="4")]
3033 pub campaign_id: ::prost::alloc::string::String,
3034 #[prost(float, tag="6")]
3037 pub grid_resolution: f32,
3038 #[prost(enumeration="HeatmapMode", tag="7")]
3040 pub mode: i32,
3041 #[prost(enumeration="TouchEventType", repeated, tag="8")]
3043 pub event_types: ::prost::alloc::vec::Vec<i32>,
3044}
3045#[derive(Clone, PartialEq, ::prost::Message)]
3047pub struct QueryHeatmapDataResponse {
3048 #[prost(message, repeated, tag="1")]
3050 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
3051 #[prost(string, tag="3")]
3054 pub screenshot_url: ::prost::alloc::string::String,
3055 #[prost(bool, tag="4")]
3057 pub cohort_enabled: bool,
3058}
3059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3061pub struct UploadScreenshotRequest {
3062 #[prost(string, tag="1")]
3065 pub screen_name: ::prost::alloc::string::String,
3066 #[prost(string, tag="2")]
3068 pub app_version: ::prost::alloc::string::String,
3069 #[prost(bytes="vec", tag="3")]
3072 pub image_data: ::prost::alloc::vec::Vec<u8>,
3073}
3074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3076pub struct UploadScreenshotResponse {
3077 #[prost(string, tag="1")]
3079 pub url: ::prost::alloc::string::String,
3080}
3081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3083pub struct ScreenScreenshot {
3084 #[prost(string, tag="1")]
3086 pub screen_name: ::prost::alloc::string::String,
3087 #[prost(string, tag="2")]
3089 pub url: ::prost::alloc::string::String,
3090 #[prost(string, tag="3")]
3092 pub app_version: ::prost::alloc::string::String,
3093}
3094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3096pub struct ListScreenshotsRequest {
3097}
3098#[derive(Clone, PartialEq, ::prost::Message)]
3100pub struct ListScreenshotsResponse {
3101 #[prost(message, repeated, tag="1")]
3103 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3104}
3105#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3109#[repr(i32)]
3110pub enum TouchEventType {
3111 Unspecified = 0,
3113 Tap = 1,
3115 LongPress = 2,
3117 Scroll = 3,
3119 ActionClick = 4,
3121}
3122impl TouchEventType {
3123 pub fn as_str_name(&self) -> &'static str {
3128 match self {
3129 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3130 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3131 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3132 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3133 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3134 }
3135 }
3136 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3138 match value {
3139 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3140 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3141 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3142 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3143 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3144 _ => None,
3145 }
3146 }
3147}
3148#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3150#[repr(i32)]
3151pub enum HeatmapMode {
3152 Unspecified = 0,
3154 Total = 1,
3156 Median = 2,
3158}
3159impl HeatmapMode {
3160 pub fn as_str_name(&self) -> &'static str {
3165 match self {
3166 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3167 Self::Total => "HEATMAP_MODE_TOTAL",
3168 Self::Median => "HEATMAP_MODE_MEDIAN",
3169 }
3170 }
3171 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3173 match value {
3174 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3175 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3176 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3177 _ => None,
3178 }
3179 }
3180}
3181#[derive(Clone, PartialEq, ::prost::Message)]
3185pub struct InboxEntry {
3186 #[prost(string, tag="1")]
3189 pub delivery_id: ::prost::alloc::string::String,
3190 #[prost(message, optional, tag="2")]
3192 pub message: ::core::option::Option<Message>,
3193 #[prost(enumeration="DeliveryStatus", tag="3")]
3195 pub status: i32,
3196 #[prost(bool, tag="4")]
3198 pub read: bool,
3199 #[prost(message, optional, tag="5")]
3201 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3202 #[prost(enumeration="delivery::Kind", tag="6")]
3206 pub kind: i32,
3207 #[prost(string, tag="7")]
3210 pub parent_delivery_id: ::prost::alloc::string::String,
3211 #[prost(string, tag="8")]
3214 pub rendered_locale: ::prost::alloc::string::String,
3215 #[prost(message, optional, tag="9")]
3219 pub metadata: ::core::option::Option<DeliveryMetadata>,
3220}
3221#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3223pub struct SyncRequest {
3224 #[prost(message, optional, tag="1")]
3226 pub since: ::core::option::Option<::prost_types::Timestamp>,
3227 #[prost(int32, tag="2")]
3230 pub limit: i32,
3231}
3232#[derive(Clone, PartialEq, ::prost::Message)]
3234pub struct SyncResponse {
3235 #[prost(message, repeated, tag="1")]
3237 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3238 #[prost(message, optional, tag="2")]
3240 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3241}
3242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3244pub struct MarkReadRequest {
3245 #[prost(string, tag="1")]
3248 pub delivery_id: ::prost::alloc::string::String,
3249}
3250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3252pub struct MarkReadResponse {
3253 #[prost(bool, tag="1")]
3255 pub success: bool,
3256}
3257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3259pub struct GetMessageRequest {
3260 #[prost(string, tag="1")]
3263 pub delivery_id: ::prost::alloc::string::String,
3264}
3265#[derive(Clone, PartialEq, ::prost::Message)]
3267pub struct GetMessageResponse {
3268 #[prost(message, optional, tag="1")]
3270 pub entry: ::core::option::Option<InboxEntry>,
3271}
3272#[derive(Clone, PartialEq, ::prost::Message)]
3277pub struct Archetype {
3278 #[prost(string, tag="1")]
3280 pub label: ::prost::alloc::string::String,
3281 #[prost(string, tag="2")]
3283 pub description: ::prost::alloc::string::String,
3284 #[prost(float, tag="3")]
3286 pub percentage: f32,
3287 #[prost(map="string, double", tag="4")]
3294 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3295 #[prost(map="string, message", tag="5")]
3300 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3301 #[prost(message, optional, tag="6")]
3305 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3306 #[prost(message, optional, tag="7")]
3310 pub forecast: ::core::option::Option<ArchetypeForecast>,
3311 #[prost(message, repeated, tag="8")]
3317 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3318 #[prost(message, optional, tag="9")]
3321 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3322 #[prost(message, optional, tag="10")]
3326 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3327}
3328#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3333pub struct DimensionStats {
3334 #[prost(double, tag="1")]
3336 pub centroid: f64,
3337 #[prost(double, tag="2")]
3339 pub p25: f64,
3340 #[prost(double, tag="3")]
3342 pub p50: f64,
3343 #[prost(double, tag="4")]
3345 pub p75: f64,
3346 #[prost(double, tag="5")]
3349 pub group_p50: f64,
3350}
3351#[derive(Clone, PartialEq, ::prost::Message)]
3355pub struct TapHeatmap {
3356 #[prost(int32, tag="1")]
3358 pub width: i32,
3359 #[prost(int32, tag="2")]
3361 pub height: i32,
3362 #[prost(double, repeated, tag="3")]
3365 pub values: ::prost::alloc::vec::Vec<f64>,
3366 #[prost(int32, tag="4")]
3369 pub session_count: i32,
3370 #[prost(message, repeated, tag="5")]
3374 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3375}
3376#[derive(Clone, PartialEq, ::prost::Message)]
3378pub struct TapHeatmapLayer {
3379 #[prost(string, tag="1")]
3382 pub event_type: ::prost::alloc::string::String,
3383 #[prost(double, repeated, tag="2")]
3386 pub values: ::prost::alloc::vec::Vec<f64>,
3387}
3388#[derive(Clone, PartialEq, ::prost::Message)]
3390pub struct ArchetypeForecast {
3391 #[prost(message, repeated, tag="1")]
3394 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3395}
3396#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3398pub struct ForecastHorizon {
3399 #[prost(int32, tag="1")]
3401 pub days: i32,
3402 #[prost(double, tag="2")]
3405 pub predicted_share: f64,
3406 #[prost(double, tag="3")]
3408 pub lower: f64,
3409 #[prost(double, tag="4")]
3411 pub upper: f64,
3412 #[prost(enumeration="ConfidenceLevel", tag="5")]
3414 pub confidence: i32,
3415}
3416#[derive(Clone, PartialEq, ::prost::Message)]
3419pub struct ExemplarSession {
3420 #[prost(string, tag="1")]
3423 pub session_id: ::prost::alloc::string::String,
3424 #[prost(int32, tag="2")]
3427 pub rank: i32,
3428 #[prost(double, tag="3")]
3430 pub distance: f64,
3431 #[prost(int32, tag="4")]
3433 pub duration_seconds: i32,
3434 #[prost(string, tag="5")]
3438 pub platform: ::prost::alloc::string::String,
3439}
3440#[derive(Clone, PartialEq, ::prost::Message)]
3444pub struct ScreenDwell {
3445 #[prost(message, repeated, tag="1")]
3448 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3449}
3450#[derive(Clone, PartialEq, ::prost::Message)]
3451pub struct ScreenDwellEntry {
3452 #[prost(string, tag="1")]
3456 pub screen_name: ::prost::alloc::string::String,
3457 #[prost(double, tag="2")]
3459 pub median_seconds: f64,
3460 #[prost(double, tag="3")]
3462 pub p75_seconds: f64,
3463 #[prost(int32, tag="4")]
3465 pub session_count: i32,
3466}
3467#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3471pub struct ResponseTimeline {
3472 #[prost(message, optional, tag="1")]
3474 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3475 #[prost(message, optional, tag="2")]
3478 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3479 #[prost(message, optional, tag="3")]
3482 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3483 #[prost(int32, tag="4")]
3485 pub delivery_count: i32,
3486}
3487#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3489pub struct LatencyPercentiles {
3490 #[prost(double, tag="1")]
3491 pub p50: f64,
3492 #[prost(double, tag="2")]
3493 pub p75: f64,
3494 #[prost(double, tag="3")]
3495 pub p95: f64,
3496}
3497#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3500pub struct CohortPrediction {
3501 #[prost(float, tag="1")]
3503 pub predicted_ack_rate: f32,
3504 #[prost(float, tag="2")]
3506 pub confidence_low: f32,
3507 #[prost(float, tag="3")]
3509 pub confidence_high: f32,
3510 #[prost(enumeration="ConfidenceLevel", tag="4")]
3512 pub confidence_level: i32,
3513 #[prost(int32, tag="5")]
3515 pub data_point_count: i32,
3516}
3517#[derive(Clone, PartialEq, ::prost::Message)]
3519pub struct CampaignAdvisory {
3520 #[prost(message, optional, tag="1")]
3522 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3523 #[prost(int32, tag="2")]
3526 pub suggested_escalation_delay_minutes: i32,
3527 #[prost(message, repeated, tag="3")]
3529 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3530}
3531#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3533pub struct GetGroupArchetypesRequest {
3534 #[prost(string, tag="1")]
3536 pub group_id: ::prost::alloc::string::String,
3537}
3538#[derive(Clone, PartialEq, ::prost::Message)]
3540pub struct GetGroupArchetypesResponse {
3541 #[prost(message, repeated, tag="1")]
3543 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3544 #[prost(int32, tag="2")]
3546 pub data_point_count: i32,
3547 #[prost(enumeration="PipelineState", tag="3")]
3551 pub pipeline_state: i32,
3552}
3553#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3555pub struct PredictCampaignAckRequest {
3556 #[prost(string, tag="1")]
3558 pub group_id: ::prost::alloc::string::String,
3559 #[prost(string, tag="2")]
3561 pub template_type: ::prost::alloc::string::String,
3562 #[prost(int32, tag="3")]
3564 pub workflow_step_count: i32,
3565}
3566#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3568pub struct PredictCampaignAckResponse {
3569 #[prost(message, optional, tag="1")]
3571 pub prediction: ::core::option::Option<CohortPrediction>,
3572}
3573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3575pub struct GetCampaignAdvisoryRequest {
3576 #[prost(string, tag="1")]
3578 pub group_id: ::prost::alloc::string::String,
3579 #[prost(string, tag="2")]
3581 pub template_id: ::prost::alloc::string::String,
3582 #[prost(int32, tag="3")]
3584 pub template_version: i32,
3585 #[prost(int32, tag="4")]
3587 pub workflow_step_count: i32,
3588}
3589#[derive(Clone, PartialEq, ::prost::Message)]
3591pub struct GetCampaignAdvisoryResponse {
3592 #[prost(message, optional, tag="1")]
3594 pub advisory: ::core::option::Option<CampaignAdvisory>,
3595}
3596#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3598pub struct GetInsightNarrativeRequest {
3599 #[prost(string, tag="1")]
3601 pub group_id: ::prost::alloc::string::String,
3602 #[prost(string, tag="2")]
3604 pub prompt_name: ::prost::alloc::string::String,
3605}
3606#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3608pub struct GetInsightNarrativeResponse {
3609 #[prost(string, tag="1")]
3611 pub narrative: ::prost::alloc::string::String,
3612 #[prost(message, optional, tag="2")]
3614 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3615 #[prost(string, tag="3")]
3617 pub model_id: ::prost::alloc::string::String,
3618}
3619#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3622pub struct TriggerMlPipelineRequest {
3623}
3624#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3626pub struct TriggerMlPipelineResponse {
3627 #[prost(int32, tag="1")]
3629 pub remaining_this_month: i32,
3630 #[prost(message, optional, tag="2")]
3632 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3633}
3634#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3638pub struct TriggerArchetypeClusteringRequest {
3639 #[prost(string, tag="1")]
3641 pub group_id: ::prost::alloc::string::String,
3642}
3643#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3645pub struct TriggerArchetypeClusteringResponse {
3646 #[prost(string, tag="1")]
3649 pub workflow_id: ::prost::alloc::string::String,
3650 #[prost(int32, tag="2")]
3653 pub remaining_this_month: i32,
3654 #[prost(message, optional, tag="3")]
3657 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3658}
3659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3663pub struct GenerateCampaignBodyDraftRequest {
3664 #[prost(string, tag="1")]
3666 pub group_id: ::prost::alloc::string::String,
3667 #[prost(string, tag="2")]
3669 pub archetype_label: ::prost::alloc::string::String,
3670 #[prost(string, tag="3")]
3673 pub lane_action: ::prost::alloc::string::String,
3674}
3675#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3677pub struct GenerateCampaignBodyDraftResponse {
3678 #[prost(string, tag="1")]
3681 pub body_markdown: ::prost::alloc::string::String,
3682}
3683#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3687#[repr(i32)]
3688pub enum ConfidenceLevel {
3689 Unspecified = 0,
3690 Low = 1,
3692 Medium = 2,
3694 High = 3,
3696}
3697impl ConfidenceLevel {
3698 pub fn as_str_name(&self) -> &'static str {
3703 match self {
3704 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3705 Self::Low => "CONFIDENCE_LEVEL_LOW",
3706 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3707 Self::High => "CONFIDENCE_LEVEL_HIGH",
3708 }
3709 }
3710 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3712 match value {
3713 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3714 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3715 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3716 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3717 _ => None,
3718 }
3719 }
3720}
3721#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3727#[repr(i32)]
3728pub enum PipelineState {
3729 Unspecified = 0,
3730 NeverRun = 1,
3733 BelowThreshold = 2,
3737 NoClusters = 3,
3741 Ready = 4,
3743}
3744impl PipelineState {
3745 pub fn as_str_name(&self) -> &'static str {
3750 match self {
3751 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3752 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3753 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3754 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3755 Self::Ready => "PIPELINE_STATE_READY",
3756 }
3757 }
3758 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3760 match value {
3761 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3762 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3763 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3764 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3765 "PIPELINE_STATE_READY" => Some(Self::Ready),
3766 _ => None,
3767 }
3768 }
3769}
3770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3777pub struct Reachability {
3778 #[prost(string, tag="1")]
3780 pub id: ::prost::alloc::string::String,
3781 #[prost(string, tag="2")]
3783 pub org_id: ::prost::alloc::string::String,
3784 #[prost(string, tag="3")]
3786 pub user_id: ::prost::alloc::string::String,
3787 #[prost(enumeration="ChannelName", tag="4")]
3789 pub channel: i32,
3790 #[prost(message, optional, tag="5")]
3792 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3793 #[prost(message, optional, tag="6")]
3795 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
3796 #[prost(string, optional, tag="7")]
3800 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3801}
3802#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3806pub struct RegionPolicy {
3807 #[prost(string, tag="1")]
3808 pub org_id: ::prost::alloc::string::String,
3809 #[prost(enumeration="ChannelName", tag="2")]
3810 pub channel: i32,
3811 #[prost(string, repeated, tag="3")]
3814 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3815 #[prost(message, optional, tag="4")]
3816 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
3817}
3818#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3826#[repr(i32)]
3827pub enum DispatchStatus {
3828 Unspecified = 0,
3830 Sent = 1,
3832 Failed = 2,
3835 Deduped = 3,
3839}
3840impl DispatchStatus {
3841 pub fn as_str_name(&self) -> &'static str {
3846 match self {
3847 Self::Unspecified => "DISPATCH_STATUS_UNSPECIFIED",
3848 Self::Sent => "DISPATCH_STATUS_SENT",
3849 Self::Failed => "DISPATCH_STATUS_FAILED",
3850 Self::Deduped => "DISPATCH_STATUS_DEDUPED",
3851 }
3852 }
3853 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3855 match value {
3856 "DISPATCH_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
3857 "DISPATCH_STATUS_SENT" => Some(Self::Sent),
3858 "DISPATCH_STATUS_FAILED" => Some(Self::Failed),
3859 "DISPATCH_STATUS_DEDUPED" => Some(Self::Deduped),
3860 _ => None,
3861 }
3862 }
3863}
3864#[derive(Clone, PartialEq, ::prost::Message)]
3871pub struct DispatchToChannelRequest {
3872 #[prost(string, tag="1")]
3874 pub dispatch_id: ::prost::alloc::string::String,
3875 #[prost(string, tag="2")]
3876 pub org_id: ::prost::alloc::string::String,
3877 #[prost(string, tag="3")]
3878 pub user_id: ::prost::alloc::string::String,
3879 #[prost(enumeration="ChannelName", tag="4")]
3881 pub channel: i32,
3882 #[prost(string, tag="5")]
3884 pub template_id: ::prost::alloc::string::String,
3885 #[prost(map="string, string", tag="6")]
3887 pub template_vars: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
3888 #[prost(string, tag="7")]
3890 pub locale: ::prost::alloc::string::String,
3891 #[prost(string, optional, tag="8")]
3894 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3895}
3896#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3897pub struct DispatchToChannelResponse {
3898 #[prost(string, tag="1")]
3900 pub dispatch_id: ::prost::alloc::string::String,
3901 #[prost(enumeration="DispatchStatus", tag="2")]
3903 pub status: i32,
3904 #[prost(string, optional, tag="3")]
3907 pub failure_reason: ::core::option::Option<::prost::alloc::string::String>,
3908}
3909#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3916pub struct UpsertReachabilityRequest {
3917 #[prost(string, tag="1")]
3918 pub org_id: ::prost::alloc::string::String,
3919 #[prost(string, tag="2")]
3920 pub user_id: ::prost::alloc::string::String,
3921 #[prost(enumeration="ChannelName", tag="3")]
3922 pub channel: i32,
3923 #[prost(string, tag="4")]
3927 pub identifier_plaintext: ::prost::alloc::string::String,
3928 #[prost(string, optional, tag="5")]
3931 pub region_constraint: ::core::option::Option<::prost::alloc::string::String>,
3932}
3933#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3934pub struct UpsertReachabilityResponse {
3935 #[prost(message, optional, tag="1")]
3938 pub reachability: ::core::option::Option<Reachability>,
3939}
3940#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3946pub struct RemoveReachabilityRequest {
3947 #[prost(string, tag="1")]
3948 pub org_id: ::prost::alloc::string::String,
3949 #[prost(string, tag="2")]
3950 pub user_id: ::prost::alloc::string::String,
3951 #[prost(enumeration="ChannelName", tag="3")]
3952 pub channel: i32,
3953}
3954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3955pub struct RemoveReachabilityResponse {
3956 #[prost(bool, tag="1")]
3959 pub removed: bool,
3960}
3961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3966pub struct GetReachabilityRequest {
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 #[prost(enumeration="ChannelName", tag="3")]
3972 pub channel: i32,
3973}
3974#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3975pub struct GetReachabilityResponse {
3976 #[prost(message, optional, tag="1")]
3978 pub reachability: ::core::option::Option<Reachability>,
3979}
3980#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3987pub struct ListReachabilityForUserRequest {
3988 #[prost(string, tag="1")]
3989 pub org_id: ::prost::alloc::string::String,
3990 #[prost(string, tag="2")]
3991 pub user_id: ::prost::alloc::string::String,
3992}
3993#[derive(Clone, PartialEq, ::prost::Message)]
3994pub struct ListReachabilityForUserResponse {
3995 #[prost(message, repeated, tag="1")]
3997 pub reachabilities: ::prost::alloc::vec::Vec<Reachability>,
3998}
3999#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4002pub struct GetRegionPolicyRequest {
4003 #[prost(string, tag="1")]
4004 pub org_id: ::prost::alloc::string::String,
4005 #[prost(enumeration="ChannelName", tag="2")]
4006 pub channel: i32,
4007}
4008#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4009pub struct GetRegionPolicyResponse {
4010 #[prost(message, optional, tag="1")]
4013 pub policy: ::core::option::Option<RegionPolicy>,
4014}
4015#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4017pub struct SetRegionPolicyRequest {
4018 #[prost(string, tag="1")]
4019 pub org_id: ::prost::alloc::string::String,
4020 #[prost(enumeration="ChannelName", tag="2")]
4021 pub channel: i32,
4022 #[prost(string, repeated, tag="3")]
4024 pub allowed_regions: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4025}
4026#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4027pub struct SetRegionPolicyResponse {
4028 #[prost(message, optional, tag="1")]
4029 pub policy: ::core::option::Option<RegionPolicy>,
4030}
4031#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4038pub struct GetCostCapPolicyRequest {
4039 #[prost(string, tag="1")]
4040 pub org_id: ::prost::alloc::string::String,
4041 #[prost(enumeration="ChannelName", tag="2")]
4042 pub channel: i32,
4043}
4044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4045pub struct GetCostCapPolicyResponse {
4046 #[prost(string, tag="1")]
4047 pub org_id: ::prost::alloc::string::String,
4048 #[prost(enumeration="ChannelName", tag="2")]
4049 pub channel: i32,
4050 #[prost(int64, tag="3")]
4052 pub cap_micros: i64,
4053 #[prost(int64, tag="4")]
4055 pub used_micros: i64,
4056 #[prost(int32, tag="5")]
4058 pub period_yyyymm: i32,
4059}
4060#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4063pub struct SetCostCapPolicyRequest {
4064 #[prost(string, tag="1")]
4065 pub org_id: ::prost::alloc::string::String,
4066 #[prost(enumeration="ChannelName", tag="2")]
4067 pub channel: i32,
4068 #[prost(int64, tag="3")]
4069 pub cap_micros: i64,
4070}
4071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4072pub struct SetCostCapPolicyResponse {
4073 #[prost(string, tag="1")]
4074 pub org_id: ::prost::alloc::string::String,
4075 #[prost(enumeration="ChannelName", tag="2")]
4076 pub channel: i32,
4077 #[prost(int64, tag="3")]
4078 pub cap_micros: i64,
4079 #[prost(int64, tag="4")]
4080 pub used_micros: i64,
4081 #[prost(int32, tag="5")]
4082 pub period_yyyymm: i32,
4083}
4084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4089pub struct InviteLink {
4090 #[prost(string, tag="1")]
4092 pub id: ::prost::alloc::string::String,
4093 #[prost(string, tag="2")]
4095 pub token: ::prost::alloc::string::String,
4096 #[prost(string, tag="3")]
4098 pub role_id: ::prost::alloc::string::String,
4099 #[prost(int32, tag="4")]
4102 pub max_uses: i32,
4103 #[prost(int32, tag="5")]
4105 pub use_count: i32,
4106 #[prost(message, optional, tag="6")]
4108 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4109 #[prost(message, optional, tag="7")]
4111 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
4112 #[prost(string, tag="8")]
4114 pub created_by: ::prost::alloc::string::String,
4115 #[prost(message, optional, tag="9")]
4117 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4118 #[prost(string, tag="10")]
4121 pub data_governance_region: ::prost::alloc::string::String,
4122}
4123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4125pub struct CreateInviteLinkRequest {
4126 #[prost(string, tag="1")]
4128 pub role_id: ::prost::alloc::string::String,
4129 #[prost(int32, tag="2")]
4131 pub max_uses: i32,
4132 #[prost(int32, tag="3")]
4135 pub expires_in_hours: i32,
4136 #[prost(string, tag="4")]
4139 pub data_governance_region: ::prost::alloc::string::String,
4140}
4141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4143pub struct CreateInviteLinkResponse {
4144 #[prost(message, optional, tag="1")]
4146 pub invite_link: ::core::option::Option<InviteLink>,
4147 #[prost(string, tag="2")]
4149 pub url: ::prost::alloc::string::String,
4150}
4151#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4153pub struct ListInviteLinksRequest {
4154}
4155#[derive(Clone, PartialEq, ::prost::Message)]
4157pub struct ListInviteLinksResponse {
4158 #[prost(message, repeated, tag="1")]
4160 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
4161}
4162#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4164pub struct RevokeInviteLinkRequest {
4165 #[prost(string, tag="1")]
4167 pub invite_link_id: ::prost::alloc::string::String,
4168}
4169#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4171pub struct RevokeInviteLinkResponse {
4172}
4173#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4175pub struct RedeemInviteLinkRequest {
4176 #[prost(string, tag="1")]
4178 pub token: ::prost::alloc::string::String,
4179}
4180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4182pub struct RedeemInviteLinkResponse {
4183 #[prost(string, tag="1")]
4185 pub organization_name: ::prost::alloc::string::String,
4186}
4187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4189pub struct ValidateInviteLinkRequest {
4190 #[prost(string, tag="1")]
4192 pub token: ::prost::alloc::string::String,
4193 #[prost(string, tag="2")]
4196 pub email: ::prost::alloc::string::String,
4197}
4198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4200pub struct ValidateInviteLinkResponse {
4201 #[prost(string, tag="1")]
4203 pub organization_name: ::prost::alloc::string::String,
4204}
4205#[derive(Clone, PartialEq, ::prost::Message)]
4209pub struct InviteUserRequest {
4210 #[prost(string, tag="1")]
4213 pub email: ::prost::alloc::string::String,
4214 #[prost(string, tag="2")]
4217 pub name: ::prost::alloc::string::String,
4218 #[prost(string, tag="4")]
4220 pub role_id: ::prost::alloc::string::String,
4221 #[prost(message, optional, tag="5")]
4223 pub profile: ::core::option::Option<UserProfile>,
4224 #[prost(string, tag="6")]
4227 pub data_governance_region: ::prost::alloc::string::String,
4228}
4229#[derive(Clone, PartialEq, ::prost::Message)]
4231pub struct InviteUserResponse {
4232 #[prost(message, optional, tag="1")]
4234 pub user: ::core::option::Option<User>,
4235}
4236#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4238pub struct GetUserRequest {
4239 #[prost(string, tag="1")]
4241 pub user_id: ::prost::alloc::string::String,
4242}
4243#[derive(Clone, PartialEq, ::prost::Message)]
4245pub struct GetUserResponse {
4246 #[prost(message, optional, tag="1")]
4248 pub user: ::core::option::Option<User>,
4249}
4250#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4252pub struct ListUsersRequest {
4253 #[prost(message, optional, tag="1")]
4255 pub pagination: ::core::option::Option<Pagination>,
4256}
4257#[derive(Clone, PartialEq, ::prost::Message)]
4259pub struct ListUsersResponse {
4260 #[prost(message, repeated, tag="1")]
4262 pub users: ::prost::alloc::vec::Vec<User>,
4263 #[prost(message, optional, tag="2")]
4265 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4266}
4267#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4269pub struct UpdateUserRoleRequest {
4270 #[prost(string, tag="1")]
4272 pub user_id: ::prost::alloc::string::String,
4273 #[prost(string, tag="2")]
4275 pub role_id: ::prost::alloc::string::String,
4276}
4277#[derive(Clone, PartialEq, ::prost::Message)]
4279pub struct UpdateUserRoleResponse {
4280 #[prost(message, optional, tag="1")]
4282 pub user: ::core::option::Option<User>,
4283}
4284#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4286pub struct DeactivateUserRequest {
4287 #[prost(string, tag="1")]
4289 pub user_id: ::prost::alloc::string::String,
4290}
4291#[derive(Clone, PartialEq, ::prost::Message)]
4293pub struct DeactivateUserResponse {
4294 #[prost(message, optional, tag="1")]
4296 pub user: ::core::option::Option<User>,
4297}
4298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4300pub struct ReactivateUserRequest {
4301 #[prost(string, tag="1")]
4303 pub user_id: ::prost::alloc::string::String,
4304}
4305#[derive(Clone, PartialEq, ::prost::Message)]
4307pub struct ReactivateUserResponse {
4308 #[prost(message, optional, tag="1")]
4310 pub user: ::core::option::Option<User>,
4311}
4312#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4314pub struct RevokeInviteRequest {
4315 #[prost(string, tag="1")]
4318 pub user_id: ::prost::alloc::string::String,
4319}
4320#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4322pub struct RevokeInviteResponse {
4323}
4324#[derive(Clone, PartialEq, ::prost::Message)]
4326pub struct UpdateUserProfileRequest {
4327 #[prost(string, tag="1")]
4330 pub user_id: ::prost::alloc::string::String,
4331 #[prost(message, optional, tag="2")]
4333 pub profile: ::core::option::Option<UserProfile>,
4334}
4335#[derive(Clone, PartialEq, ::prost::Message)]
4337pub struct UpdateUserProfileResponse {
4338 #[prost(message, optional, tag="1")]
4340 pub user: ::core::option::Option<User>,
4341}
4342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4344pub struct GetUserSettingsRequest {
4345}
4346#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4348pub struct GetUserSettingsResponse {
4349 #[prost(message, optional, tag="1")]
4351 pub settings: ::core::option::Option<UserSettings>,
4352}
4353#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4355pub struct UpdateUserSettingsRequest {
4356 #[prost(message, optional, tag="1")]
4359 pub settings: ::core::option::Option<UserSettings>,
4360}
4361#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4363pub struct UpdateUserSettingsResponse {
4364 #[prost(message, optional, tag="1")]
4366 pub settings: ::core::option::Option<UserSettings>,
4367}
4368#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4370pub struct BulkInviteUsersRequest {
4371 #[prost(string, repeated, tag="1")]
4374 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4375 #[prost(string, tag="2")]
4377 pub role_id: ::prost::alloc::string::String,
4378}
4379#[derive(Clone, PartialEq, ::prost::Message)]
4381pub struct BulkInviteResult {
4382 #[prost(string, tag="1")]
4384 pub email: ::prost::alloc::string::String,
4385 #[prost(bool, tag="2")]
4387 pub success: bool,
4388 #[prost(string, tag="3")]
4391 pub error: ::prost::alloc::string::String,
4392 #[prost(message, optional, tag="4")]
4394 pub user: ::core::option::Option<User>,
4395}
4396#[derive(Clone, PartialEq, ::prost::Message)]
4398pub struct BulkInviteUsersResponse {
4399 #[prost(message, repeated, tag="1")]
4401 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
4402 #[prost(int32, tag="2")]
4404 pub invited_count: i32,
4405 #[prost(int32, tag="3")]
4407 pub failed_count: i32,
4408}
4409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4413pub struct ConfirmPasskeyEnrollmentRequest {
4414}
4415#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4417pub struct ConfirmPasskeyEnrollmentResponse {
4418 #[prost(bool, tag="1")]
4420 pub confirmed: bool,
4421}
4422#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4424pub struct UpdateUserRegionRequest {
4425 #[prost(string, tag="1")]
4427 pub user_id: ::prost::alloc::string::String,
4428 #[prost(string, tag="2")]
4431 pub data_governance_region: ::prost::alloc::string::String,
4432}
4433#[derive(Clone, PartialEq, ::prost::Message)]
4435pub struct UpdateUserRegionResponse {
4436 #[prost(message, optional, tag="1")]
4438 pub user: ::core::option::Option<User>,
4439 #[prost(string, tag="2")]
4442 pub migration_workflow_id: ::prost::alloc::string::String,
4443}
4444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4453pub struct Pepper {
4454 #[prost(int32, tag="1")]
4456 pub version: i32,
4457 #[prost(bytes="vec", tag="2")]
4461 pub key_material: ::prost::alloc::vec::Vec<u8>,
4462}
4463#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4470pub struct GetPeppersRequest {
4471 #[prost(string, tag="1")]
4473 pub org_id: ::prost::alloc::string::String,
4474 #[prost(string, tag="2")]
4477 pub purpose: ::prost::alloc::string::String,
4478}
4479#[derive(Clone, PartialEq, ::prost::Message)]
4480pub struct GetPeppersResponse {
4481 #[prost(message, repeated, tag="1")]
4486 pub peppers: ::prost::alloc::vec::Vec<Pepper>,
4487}
4488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4493pub struct SsoAttributeMapping {
4494 #[prost(string, tag="1")]
4497 pub idp_claim: ::prost::alloc::string::String,
4498 #[prost(string, tag="2")]
4502 pub profile_field: ::prost::alloc::string::String,
4503}
4504#[derive(Clone, PartialEq, ::prost::Message)]
4506pub struct Organization {
4507 #[prost(string, tag="1")]
4509 pub id: ::prost::alloc::string::String,
4510 #[prost(string, tag="2")]
4513 pub name: ::prost::alloc::string::String,
4514 #[prost(message, optional, tag="3")]
4516 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4517 #[prost(message, optional, tag="4")]
4519 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4520 #[prost(enumeration="Industry", tag="5")]
4522 pub industry: i32,
4523 #[prost(enumeration="CompanySize", tag="6")]
4525 pub company_size: i32,
4526 #[prost(message, repeated, tag="7")]
4529 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4530 #[prost(string, tag="8")]
4534 pub default_locale: ::prost::alloc::string::String,
4535 #[prost(enumeration="OrgType", tag="9")]
4537 pub org_type: i32,
4538 #[prost(message, optional, tag="10")]
4540 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4541 #[prost(string, tag="11")]
4544 pub data_governance_region: ::prost::alloc::string::String,
4545 #[prost(string, tag="12")]
4548 pub data_content_region: ::prost::alloc::string::String,
4549 #[prost(int32, tag="13")]
4554 pub ml_retrain_cold_threshold: i32,
4555 #[prost(bool, tag="14")]
4557 pub ml_cancelled_counts: bool,
4558 #[prost(int32, tag="15")]
4560 pub ml_manual_limit_monthly: i32,
4561 #[prost(int32, tag="16")]
4563 pub ml_manual_retrains_used: i32,
4564 #[prost(bool, tag="17")]
4566 pub ml_needs_retrain: bool,
4567 #[prost(int32, tag="18")]
4569 pub campaigns_since_last_training: i32,
4570 #[prost(int32, tag="19")]
4572 pub total_completed_campaigns: i32,
4573 #[prost(message, optional, tag="20")]
4575 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4576 #[prost(bool, optional, tag="21")]
4581 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
4582}
4583#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4587pub struct CreateOrganizationRequest {
4588 #[prost(string, tag="1")]
4591 pub name: ::prost::alloc::string::String,
4592 #[prost(enumeration="Industry", tag="2")]
4594 pub industry: i32,
4595 #[prost(enumeration="CompanySize", tag="3")]
4597 pub company_size: i32,
4598 #[prost(string, tag="4")]
4601 pub access_code: ::prost::alloc::string::String,
4602 #[prost(string, tag="5")]
4605 pub data_governance_region: ::prost::alloc::string::String,
4606 #[prost(string, tag="6")]
4609 pub fixture_id: ::prost::alloc::string::String,
4610}
4611#[derive(Clone, PartialEq, ::prost::Message)]
4613pub struct CreateOrganizationResponse {
4614 #[prost(message, optional, tag="1")]
4616 pub organization: ::core::option::Option<Organization>,
4617 #[prost(message, optional, tag="2")]
4619 pub admin_user: ::core::option::Option<User>,
4620}
4621#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4623pub struct GetOrganizationRequest {
4624}
4625#[derive(Clone, PartialEq, ::prost::Message)]
4627pub struct GetOrganizationResponse {
4628 #[prost(message, optional, tag="1")]
4630 pub organization: ::core::option::Option<Organization>,
4631}
4632#[derive(Clone, PartialEq, ::prost::Message)]
4634pub struct UpdateOrganizationRequest {
4635 #[prost(string, tag="1")]
4638 pub name: ::prost::alloc::string::String,
4639 #[prost(message, optional, tag="2")]
4641 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4642 #[prost(enumeration="Industry", tag="3")]
4644 pub industry: i32,
4645 #[prost(enumeration="CompanySize", tag="4")]
4647 pub company_size: i32,
4648 #[prost(string, tag="5")]
4651 pub default_locale: ::prost::alloc::string::String,
4652 #[prost(int32, tag="6")]
4654 pub ml_retrain_cold_threshold: i32,
4655 #[prost(bool, optional, tag="7")]
4658 pub ml_cancelled_counts: ::core::option::Option<bool>,
4659 #[prost(int32, tag="8")]
4662 pub ml_manual_limit_monthly: i32,
4663 #[prost(bool, optional, tag="9")]
4665 pub include_synthetic_in_aggregates: ::core::option::Option<bool>,
4666}
4667#[derive(Clone, PartialEq, ::prost::Message)]
4669pub struct UpdateOrganizationResponse {
4670 #[prost(message, optional, tag="1")]
4672 pub organization: ::core::option::Option<Organization>,
4673}
4674#[derive(Clone, PartialEq, ::prost::Message)]
4676pub struct UpdateSsoAttributeMappingsRequest {
4677 #[prost(message, repeated, tag="1")]
4679 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4680}
4681#[derive(Clone, PartialEq, ::prost::Message)]
4683pub struct UpdateSsoAttributeMappingsResponse {
4684 #[prost(message, optional, tag="1")]
4686 pub organization: ::core::option::Option<Organization>,
4687}
4688#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4690pub struct RotateAnalyticsSaltRequest {
4691 #[prost(int32, tag="1")]
4693 pub new_bucket_count: i32,
4694}
4695#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4697pub struct RotateAnalyticsSaltResponse {
4698 #[prost(int32, tag="1")]
4700 pub bucket_count: i32,
4701}
4702#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4704pub struct UpdateAnalyticsEpsilonRequest {
4705 #[prost(float, tag="1")]
4707 pub epsilon: f32,
4708}
4709#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4711pub struct UpdateAnalyticsEpsilonResponse {
4712 #[prost(float, tag="1")]
4714 pub epsilon: f32,
4715}
4716#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4718pub struct CreateSandboxOrganizationRequest {
4719 #[prost(string, tag="1")]
4722 pub name: ::prost::alloc::string::String,
4723 #[prost(message, optional, tag="2")]
4726 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4727 #[prost(string, tag="3")]
4730 pub data_governance_region: ::prost::alloc::string::String,
4731 #[prost(string, tag="4")]
4735 pub fixture_id: ::prost::alloc::string::String,
4736}
4737#[derive(Clone, PartialEq, ::prost::Message)]
4739pub struct CreateSandboxOrganizationResponse {
4740 #[prost(message, optional, tag="1")]
4742 pub organization: ::core::option::Option<Organization>,
4743 #[prost(message, optional, tag="2")]
4745 pub admin_user: ::core::option::Option<User>,
4746}
4747#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4750pub struct DeleteSandboxOrganizationRequest {
4751 #[prost(string, tag="1")]
4753 pub org_id: ::prost::alloc::string::String,
4754}
4755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4758pub struct DeleteSandboxOrganizationResponse {
4759 #[prost(string, tag="1")]
4761 pub workflow_id: ::prost::alloc::string::String,
4762}
4763#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4765pub struct SandboxFixture {
4766 #[prost(string, tag="1")]
4769 pub id: ::prost::alloc::string::String,
4770 #[prost(string, tag="2")]
4772 pub name: ::prost::alloc::string::String,
4773 #[prost(string, tag="3")]
4775 pub description: ::prost::alloc::string::String,
4776 #[prost(bool, tag="4")]
4779 pub is_default: bool,
4780}
4781#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4784pub struct ListSandboxFixturesRequest {
4785}
4786#[derive(Clone, PartialEq, ::prost::Message)]
4788pub struct ListSandboxFixturesResponse {
4789 #[prost(message, repeated, tag="1")]
4791 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
4792}
4793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4796pub struct ListUserOrganizationsRequest {
4797}
4798#[derive(Clone, PartialEq, ::prost::Message)]
4800pub struct ListUserOrganizationsResponse {
4801 #[prost(message, repeated, tag="1")]
4804 pub organizations: ::prost::alloc::vec::Vec<Organization>,
4805}
4806#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4811pub struct ListUserSandboxesRequest {
4812}
4813#[derive(Clone, PartialEq, ::prost::Message)]
4815pub struct ListUserSandboxesResponse {
4816 #[prost(message, repeated, tag="1")]
4821 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
4822}
4823#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4827#[repr(i32)]
4828pub enum Industry {
4829 Unspecified = 0,
4830 Technology = 1,
4831 Finance = 2,
4832 Healthcare = 3,
4833 Education = 4,
4834 Retail = 5,
4835 Manufacturing = 6,
4836 Media = 7,
4837 Other = 8,
4838}
4839impl Industry {
4840 pub fn as_str_name(&self) -> &'static str {
4845 match self {
4846 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
4847 Self::Technology => "INDUSTRY_TECHNOLOGY",
4848 Self::Finance => "INDUSTRY_FINANCE",
4849 Self::Healthcare => "INDUSTRY_HEALTHCARE",
4850 Self::Education => "INDUSTRY_EDUCATION",
4851 Self::Retail => "INDUSTRY_RETAIL",
4852 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
4853 Self::Media => "INDUSTRY_MEDIA",
4854 Self::Other => "INDUSTRY_OTHER",
4855 }
4856 }
4857 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4859 match value {
4860 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
4861 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
4862 "INDUSTRY_FINANCE" => Some(Self::Finance),
4863 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
4864 "INDUSTRY_EDUCATION" => Some(Self::Education),
4865 "INDUSTRY_RETAIL" => Some(Self::Retail),
4866 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
4867 "INDUSTRY_MEDIA" => Some(Self::Media),
4868 "INDUSTRY_OTHER" => Some(Self::Other),
4869 _ => None,
4870 }
4871 }
4872}
4873#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4875#[repr(i32)]
4876pub enum CompanySize {
4877 Unspecified = 0,
4878 CompanySize1200 = 1,
4879 CompanySize200500 = 2,
4880 CompanySize5001000 = 3,
4881 CompanySize10005000 = 4,
4882 CompanySize5000Plus = 5,
4883}
4884impl CompanySize {
4885 pub fn as_str_name(&self) -> &'static str {
4890 match self {
4891 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
4892 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
4893 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
4894 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
4895 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
4896 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
4897 }
4898 }
4899 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4901 match value {
4902 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
4903 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
4904 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
4905 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
4906 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
4907 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
4908 _ => None,
4909 }
4910 }
4911}
4912#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4914#[repr(i32)]
4915pub enum OrgType {
4916 Unspecified = 0,
4917 Standard = 1,
4918 Sandbox = 2,
4919 Staff = 3,
4922}
4923impl OrgType {
4924 pub fn as_str_name(&self) -> &'static str {
4929 match self {
4930 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
4931 Self::Standard => "ORG_TYPE_STANDARD",
4932 Self::Sandbox => "ORG_TYPE_SANDBOX",
4933 Self::Staff => "ORG_TYPE_STAFF",
4934 }
4935 }
4936 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4938 match value {
4939 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4940 "ORG_TYPE_STANDARD" => Some(Self::Standard),
4941 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
4942 "ORG_TYPE_STAFF" => Some(Self::Staff),
4943 _ => None,
4944 }
4945 }
4946}
4947#[derive(Clone, PartialEq, ::prost::Message)]
4951pub struct UserRenderContext {
4952 #[prost(string, tag="1")]
4954 pub user_id: ::prost::alloc::string::String,
4955 #[prost(map="string, string", tag="2")]
4958 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4959}
4960#[derive(Clone, PartialEq, ::prost::Message)]
4962pub struct RenderBatchRequest {
4963 #[prost(string, tag="1")]
4965 pub template_id: ::prost::alloc::string::String,
4966 #[prost(int32, tag="2")]
4968 pub version: i32,
4969 #[prost(message, repeated, tag="3")]
4972 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
4973}
4974#[derive(Clone, PartialEq, ::prost::Message)]
4977pub struct RenderBatchResponse {
4978 #[prost(string, tag="1")]
4980 pub user_id: ::prost::alloc::string::String,
4981 #[prost(message, optional, tag="2")]
4983 pub message: ::core::option::Option<Message>,
4984 #[prost(string, tag="3")]
4986 pub error: ::prost::alloc::string::String,
4987}
4988#[derive(Clone, PartialEq, ::prost::Message)]
4993pub struct SessionRecording {
4994 #[prost(string, tag="1")]
4996 pub id: ::prost::alloc::string::String,
4997 #[prost(message, optional, tag="2")]
4999 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
5000 #[prost(message, optional, tag="3")]
5002 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
5003 #[prost(int32, tag="4")]
5005 pub duration_seconds: i32,
5006 #[prost(float, tag="5")]
5008 pub activity_score: f32,
5009}
5010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5012pub struct ListSessionRecordingsRequest {
5013 #[prost(string, tag="1")]
5016 pub campaign_id: ::prost::alloc::string::String,
5017 #[prost(message, optional, tag="2")]
5019 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
5020 #[prost(message, optional, tag="3")]
5022 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
5023 #[prost(message, optional, tag="4")]
5025 pub pagination: ::core::option::Option<Pagination>,
5026}
5027#[derive(Clone, PartialEq, ::prost::Message)]
5029pub struct ListSessionRecordingsResponse {
5030 #[prost(message, repeated, tag="1")]
5032 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
5033 #[prost(message, optional, tag="2")]
5035 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5036}
5037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5039pub struct GetSessionSnapshotsRequest {
5040 #[prost(string, tag="1")]
5043 pub recording_id: ::prost::alloc::string::String,
5044}
5045#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5047pub struct GetSessionSnapshotsResponse {
5048 #[prost(string, tag="1")]
5051 pub snapshot_data: ::prost::alloc::string::String,
5052}
5053#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5057pub struct ListRolesRequest {
5058}
5059#[derive(Clone, PartialEq, ::prost::Message)]
5061pub struct ListRolesResponse {
5062 #[prost(message, repeated, tag="1")]
5064 pub roles: ::prost::alloc::vec::Vec<Role>,
5065}
5066#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5068pub struct CreateRoleRequest {
5069 #[prost(string, tag="1")]
5072 pub name: ::prost::alloc::string::String,
5073 #[prost(enumeration="Permission", repeated, tag="2")]
5076 pub permissions: ::prost::alloc::vec::Vec<i32>,
5077}
5078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5080pub struct CreateRoleResponse {
5081 #[prost(message, optional, tag="1")]
5083 pub role: ::core::option::Option<Role>,
5084}
5085#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5087pub struct UpdateRoleRequest {
5088 #[prost(string, tag="1")]
5090 pub role_id: ::prost::alloc::string::String,
5091 #[prost(string, tag="2")]
5093 pub name: ::prost::alloc::string::String,
5094 #[prost(enumeration="Permission", repeated, tag="3")]
5098 pub permissions: ::prost::alloc::vec::Vec<i32>,
5099}
5100#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5102pub struct UpdateRoleResponse {
5103 #[prost(message, optional, tag="1")]
5105 pub role: ::core::option::Option<Role>,
5106}
5107#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5109pub struct DeleteRoleRequest {
5110 #[prost(string, tag="1")]
5112 pub role_id: ::prost::alloc::string::String,
5113}
5114#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5116pub struct DeleteRoleResponse {
5117}
5118#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5124pub struct SamlAttributeNames {
5125 #[prost(string, tag="1")]
5127 pub email: ::prost::alloc::string::String,
5128 #[prost(string, tag="2")]
5130 pub given_name: ::prost::alloc::string::String,
5131 #[prost(string, tag="3")]
5133 pub family_name: ::prost::alloc::string::String,
5134}
5135#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5137pub struct SsoProvider {
5138 #[prost(string, tag="1")]
5140 pub id: ::prost::alloc::string::String,
5141 #[prost(string, tag="2")]
5144 pub domain: ::prost::alloc::string::String,
5145 #[prost(enumeration="SsoProviderType", tag="3")]
5147 pub r#type: i32,
5148 #[prost(string, tag="4")]
5151 pub metadata_url: ::prost::alloc::string::String,
5152 #[prost(string, tag="5")]
5155 pub idp_provider_name: ::prost::alloc::string::String,
5156 #[prost(message, optional, tag="6")]
5158 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5159 #[prost(message, optional, tag="7")]
5161 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5162 #[prost(message, optional, tag="8")]
5164 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5165}
5166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5169pub struct CheckSsoByDomainRequest {
5170 #[prost(string, tag="1")]
5173 pub email: ::prost::alloc::string::String,
5174}
5175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5177pub struct CheckSsoByDomainResponse {
5178 #[prost(bool, tag="1")]
5180 pub sso_enabled: bool,
5181 #[prost(string, tag="2")]
5184 pub provider_name: ::prost::alloc::string::String,
5185}
5186#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5188pub struct CreateSsoProviderRequest {
5189 #[prost(string, tag="1")]
5192 pub domain: ::prost::alloc::string::String,
5193 #[prost(enumeration="SsoProviderType", tag="2")]
5195 pub r#type: i32,
5196 #[prost(string, tag="3")]
5199 pub metadata_url: ::prost::alloc::string::String,
5200 #[prost(message, optional, tag="4")]
5203 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
5204}
5205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5207pub struct CreateSsoProviderResponse {
5208 #[prost(message, optional, tag="1")]
5210 pub provider: ::core::option::Option<SsoProvider>,
5211}
5212#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5215pub struct GetSsoProviderRequest {
5216}
5217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5219pub struct GetSsoProviderResponse {
5220 #[prost(message, optional, tag="1")]
5222 pub provider: ::core::option::Option<SsoProvider>,
5223}
5224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5226pub struct DeleteSsoProviderRequest {
5227 #[prost(string, tag="1")]
5229 pub provider_id: ::prost::alloc::string::String,
5230}
5231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5233pub struct DeleteSsoProviderResponse {
5234}
5235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5239#[repr(i32)]
5240pub enum SsoProviderType {
5241 Unspecified = 0,
5243 Saml = 1,
5245 Oidc = 2,
5247}
5248impl SsoProviderType {
5249 pub fn as_str_name(&self) -> &'static str {
5254 match self {
5255 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
5256 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
5257 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
5258 }
5259 }
5260 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5262 match value {
5263 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5264 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
5265 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
5266 _ => None,
5267 }
5268 }
5269}
5270#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5276pub struct Team {
5277 #[prost(string, tag="1")]
5279 pub id: ::prost::alloc::string::String,
5280 #[prost(string, tag="2")]
5283 pub name: ::prost::alloc::string::String,
5284 #[prost(string, tag="3")]
5287 pub description: ::prost::alloc::string::String,
5288 #[prost(int32, tag="4")]
5290 pub member_count: i32,
5291 #[prost(message, optional, tag="5")]
5293 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5294 #[prost(message, optional, tag="6")]
5296 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5297 #[prost(bool, tag="7")]
5299 pub is_default: bool,
5300 #[prost(string, tag="8")]
5302 pub created_by: ::prost::alloc::string::String,
5303}
5304#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5306pub struct CreateTeamRequest {
5307 #[prost(string, tag="1")]
5310 pub name: ::prost::alloc::string::String,
5311 #[prost(string, tag="2")]
5314 pub description: ::prost::alloc::string::String,
5315}
5316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5318pub struct CreateTeamResponse {
5319 #[prost(message, optional, tag="1")]
5321 pub team: ::core::option::Option<Team>,
5322}
5323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5325pub struct GetTeamRequest {
5326 #[prost(string, tag="1")]
5328 pub team_id: ::prost::alloc::string::String,
5329}
5330#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5332pub struct GetTeamResponse {
5333 #[prost(message, optional, tag="1")]
5335 pub team: ::core::option::Option<Team>,
5336}
5337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5339pub struct ListTeamsRequest {
5340 #[prost(message, optional, tag="1")]
5342 pub pagination: ::core::option::Option<Pagination>,
5343}
5344#[derive(Clone, PartialEq, ::prost::Message)]
5346pub struct ListTeamsResponse {
5347 #[prost(message, repeated, tag="1")]
5349 pub teams: ::prost::alloc::vec::Vec<Team>,
5350 #[prost(message, optional, tag="2")]
5352 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5353}
5354#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5356pub struct UpdateTeamRequest {
5357 #[prost(string, tag="1")]
5359 pub team_id: ::prost::alloc::string::String,
5360 #[prost(string, tag="2")]
5364 pub name: ::prost::alloc::string::String,
5365 #[prost(string, tag="3")]
5368 pub description: ::prost::alloc::string::String,
5369}
5370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5372pub struct UpdateTeamResponse {
5373 #[prost(message, optional, tag="1")]
5375 pub team: ::core::option::Option<Team>,
5376}
5377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5379pub struct DeleteTeamRequest {
5380 #[prost(string, tag="1")]
5383 pub team_id: ::prost::alloc::string::String,
5384}
5385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5387pub struct DeleteTeamResponse {
5388}
5389#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5391pub struct AddTeamMembersRequest {
5392 #[prost(string, tag="1")]
5394 pub team_id: ::prost::alloc::string::String,
5395 #[prost(string, repeated, tag="2")]
5399 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5400}
5401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5403pub struct AddTeamMembersResponse {
5404 #[prost(message, optional, tag="1")]
5406 pub team: ::core::option::Option<Team>,
5407}
5408#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5410pub struct RemoveTeamMembersRequest {
5411 #[prost(string, tag="1")]
5413 pub team_id: ::prost::alloc::string::String,
5414 #[prost(string, repeated, tag="2")]
5417 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5418}
5419#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5421pub struct RemoveTeamMembersResponse {
5422 #[prost(message, optional, tag="1")]
5424 pub team: ::core::option::Option<Team>,
5425}
5426#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5428pub struct ListTeamMembersRequest {
5429 #[prost(string, tag="1")]
5431 pub team_id: ::prost::alloc::string::String,
5432 #[prost(message, optional, tag="2")]
5434 pub pagination: ::core::option::Option<Pagination>,
5435}
5436#[derive(Clone, PartialEq, ::prost::Message)]
5438pub struct ListTeamMembersResponse {
5439 #[prost(message, repeated, tag="1")]
5441 pub users: ::prost::alloc::vec::Vec<User>,
5442 #[prost(message, optional, tag="2")]
5444 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5445}
5446#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5450pub struct TemplateVariable {
5451 #[prost(string, tag="1")]
5454 pub name: ::prost::alloc::string::String,
5455 #[prost(string, tag="2")]
5458 pub description: ::prost::alloc::string::String,
5459 #[prost(bool, tag="3")]
5461 pub required: bool,
5462 #[prost(enumeration="TemplateVariableSource", tag="4")]
5464 pub source: i32,
5465 #[prost(string, tag="5")]
5468 pub default_value: ::prost::alloc::string::String,
5469 #[prost(bool, tag="6")]
5472 pub pii: bool,
5473}
5474#[derive(Clone, PartialEq, ::prost::Message)]
5477pub struct Template {
5478 #[prost(string, tag="1")]
5480 pub id: ::prost::alloc::string::String,
5481 #[prost(string, tag="2")]
5484 pub name: ::prost::alloc::string::String,
5485 #[prost(string, tag="3")]
5488 pub body: ::prost::alloc::string::String,
5489 #[prost(message, repeated, tag="4")]
5491 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5492 #[prost(int32, tag="5")]
5494 pub version: i32,
5495 #[prost(message, optional, tag="6")]
5497 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5498 #[prost(message, optional, tag="7")]
5500 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5501 #[prost(string, tag="8")]
5505 pub title: ::prost::alloc::string::String,
5506 #[prost(enumeration="TemplateType", tag="9")]
5509 pub r#type: i32,
5510 #[prost(string, tag="10")]
5514 pub source_locale: ::prost::alloc::string::String,
5515}
5516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5519pub struct TemplateTranslation {
5520 #[prost(string, tag="1")]
5522 pub id: ::prost::alloc::string::String,
5523 #[prost(string, tag="2")]
5525 pub template_id: ::prost::alloc::string::String,
5526 #[prost(int32, tag="3")]
5528 pub version: i32,
5529 #[prost(string, tag="4")]
5531 pub locale: ::prost::alloc::string::String,
5532 #[prost(string, tag="5")]
5535 pub title: ::prost::alloc::string::String,
5536 #[prost(string, tag="6")]
5539 pub body: ::prost::alloc::string::String,
5540 #[prost(enumeration="TranslationStatus", tag="7")]
5542 pub status: i32,
5543 #[prost(string, tag="8")]
5545 pub translated_by: ::prost::alloc::string::String,
5546 #[prost(string, tag="9")]
5548 pub reviewed_by: ::prost::alloc::string::String,
5549 #[prost(message, optional, tag="10")]
5551 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5552 #[prost(message, optional, tag="11")]
5554 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5555}
5556#[derive(Clone, PartialEq, ::prost::Message)]
5558pub struct CreateTemplateRequest {
5559 #[prost(string, tag="1")]
5562 pub name: ::prost::alloc::string::String,
5563 #[prost(string, tag="2")]
5566 pub body: ::prost::alloc::string::String,
5567 #[prost(message, repeated, tag="3")]
5569 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5570 #[prost(string, tag="4")]
5573 pub title: ::prost::alloc::string::String,
5574 #[prost(enumeration="TemplateType", tag="5")]
5576 pub r#type: i32,
5577 #[prost(string, tag="6")]
5580 pub source_locale: ::prost::alloc::string::String,
5581}
5582#[derive(Clone, PartialEq, ::prost::Message)]
5584pub struct CreateTemplateResponse {
5585 #[prost(message, optional, tag="1")]
5587 pub template: ::core::option::Option<Template>,
5588}
5589#[derive(Clone, PartialEq, ::prost::Message)]
5591pub struct UpdateTemplateRequest {
5592 #[prost(string, tag="1")]
5594 pub template_id: ::prost::alloc::string::String,
5595 #[prost(string, tag="2")]
5598 pub body: ::prost::alloc::string::String,
5599 #[prost(message, repeated, tag="3")]
5601 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5602}
5603#[derive(Clone, PartialEq, ::prost::Message)]
5605pub struct UpdateTemplateResponse {
5606 #[prost(message, optional, tag="1")]
5608 pub template: ::core::option::Option<Template>,
5609}
5610#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5612pub struct GetTemplateRequest {
5613 #[prost(string, tag="1")]
5615 pub template_id: ::prost::alloc::string::String,
5616 #[prost(int32, tag="2")]
5618 pub version: i32,
5619}
5620#[derive(Clone, PartialEq, ::prost::Message)]
5622pub struct GetTemplateResponse {
5623 #[prost(message, optional, tag="1")]
5625 pub template: ::core::option::Option<Template>,
5626}
5627#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5629pub struct ListTemplatesRequest {
5630 #[prost(message, optional, tag="1")]
5632 pub pagination: ::core::option::Option<Pagination>,
5633 #[prost(enumeration="TemplateType", tag="2")]
5635 pub r#type: i32,
5636}
5637#[derive(Clone, PartialEq, ::prost::Message)]
5639pub struct ListTemplatesResponse {
5640 #[prost(message, repeated, tag="1")]
5642 pub templates: ::prost::alloc::vec::Vec<Template>,
5643 #[prost(message, optional, tag="2")]
5645 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5646}
5647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5649pub struct CreateTemplateTranslationRequest {
5650 #[prost(string, tag="1")]
5652 pub template_id: ::prost::alloc::string::String,
5653 #[prost(int32, tag="2")]
5655 pub version: i32,
5656 #[prost(string, tag="3")]
5658 pub locale: ::prost::alloc::string::String,
5659 #[prost(string, tag="4")]
5661 pub title: ::prost::alloc::string::String,
5662 #[prost(string, tag="5")]
5664 pub body: ::prost::alloc::string::String,
5665 #[prost(string, tag="6")]
5667 pub translated_by: ::prost::alloc::string::String,
5668 #[prost(enumeration="TranslationStatus", tag="7")]
5670 pub status: i32,
5671}
5672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5674pub struct CreateTemplateTranslationResponse {
5675 #[prost(message, optional, tag="1")]
5677 pub translation: ::core::option::Option<TemplateTranslation>,
5678}
5679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5681pub struct UpdateTemplateTranslationRequest {
5682 #[prost(string, tag="1")]
5684 pub translation_id: ::prost::alloc::string::String,
5685 #[prost(string, tag="2")]
5687 pub title: ::prost::alloc::string::String,
5688 #[prost(string, tag="3")]
5690 pub body: ::prost::alloc::string::String,
5691 #[prost(enumeration="TranslationStatus", tag="4")]
5693 pub status: i32,
5694}
5695#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5697pub struct UpdateTemplateTranslationResponse {
5698 #[prost(message, optional, tag="1")]
5700 pub translation: ::core::option::Option<TemplateTranslation>,
5701}
5702#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5704pub struct ListTemplateTranslationsRequest {
5705 #[prost(string, tag="1")]
5707 pub template_id: ::prost::alloc::string::String,
5708 #[prost(int32, tag="2")]
5710 pub version: i32,
5711}
5712#[derive(Clone, PartialEq, ::prost::Message)]
5714pub struct ListTemplateTranslationsResponse {
5715 #[prost(message, repeated, tag="1")]
5717 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
5718}
5719#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5721pub struct ApproveTemplateTranslationRequest {
5722 #[prost(string, tag="1")]
5724 pub translation_id: ::prost::alloc::string::String,
5725}
5726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5728pub struct ApproveTemplateTranslationResponse {
5729 #[prost(message, optional, tag="1")]
5731 pub translation: ::core::option::Option<TemplateTranslation>,
5732}
5733#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5737#[repr(i32)]
5738pub enum TemplateType {
5739 Unspecified = 0,
5741 Markdown = 1,
5743 Rich = 2,
5745 Html = 3,
5747}
5748impl TemplateType {
5749 pub fn as_str_name(&self) -> &'static str {
5754 match self {
5755 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
5756 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
5757 Self::Rich => "TEMPLATE_TYPE_RICH",
5758 Self::Html => "TEMPLATE_TYPE_HTML",
5759 }
5760 }
5761 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5763 match value {
5764 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5765 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
5766 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
5767 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
5768 _ => None,
5769 }
5770 }
5771}
5772#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5774#[repr(i32)]
5775pub enum TemplateVariableSource {
5776 Unspecified = 0,
5778 Profile = 1,
5780 Custom = 2,
5782}
5783impl TemplateVariableSource {
5784 pub fn as_str_name(&self) -> &'static str {
5789 match self {
5790 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
5791 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
5792 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
5793 }
5794 }
5795 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5797 match value {
5798 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
5799 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
5800 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
5801 _ => None,
5802 }
5803 }
5804}
5805#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5807#[repr(i32)]
5808pub enum TranslationStatus {
5809 Unspecified = 0,
5810 Draft = 1,
5812 AiTranslated = 2,
5814 InReview = 3,
5816 Approved = 4,
5818}
5819impl TranslationStatus {
5820 pub fn as_str_name(&self) -> &'static str {
5825 match self {
5826 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
5827 Self::Draft => "TRANSLATION_STATUS_DRAFT",
5828 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
5829 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
5830 Self::Approved => "TRANSLATION_STATUS_APPROVED",
5831 }
5832 }
5833 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5835 match value {
5836 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5837 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
5838 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
5839 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
5840 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
5841 _ => None,
5842 }
5843 }
5844}
5845#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5850pub struct DeeplinkTokenPayload {
5851 #[prost(string, tag="1")]
5854 pub campaign_id: ::prost::alloc::string::String,
5855 #[prost(string, tag="2")]
5861 pub recipient_user_id: ::prost::alloc::string::String,
5862 #[prost(enumeration="ChannelStepKind", tag="3")]
5866 pub step_kind: i32,
5867 #[prost(message, optional, tag="4")]
5870 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5871}
5872#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5873pub struct SignDeeplinkTokenRequest {
5874 #[prost(string, tag="1")]
5877 pub campaign_id: ::prost::alloc::string::String,
5878 #[prost(string, tag="2")]
5881 pub recipient_user_id: ::prost::alloc::string::String,
5882 #[prost(enumeration="ChannelStepKind", tag="3")]
5884 pub step_kind: i32,
5885 #[prost(int64, tag="4")]
5890 pub ttl_seconds: i64,
5891}
5892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5893pub struct SignDeeplinkTokenResponse {
5894 #[prost(string, tag="1")]
5900 pub token: ::prost::alloc::string::String,
5901 #[prost(message, optional, tag="2")]
5904 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5905 #[prost(int32, tag="3")]
5909 pub key_version: i32,
5910}
5911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5912pub struct ValidateDeeplinkTokenRequest {
5913 #[prost(string, tag="1")]
5916 pub token: ::prost::alloc::string::String,
5917 #[prost(string, tag="2")]
5924 pub campaign_id: ::prost::alloc::string::String,
5925}
5926#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5927pub struct ValidateDeeplinkTokenResponse {
5928 #[prost(bool, tag="1")]
5931 pub valid: bool,
5932 #[prost(enumeration="ValidationFailureReason", tag="2")]
5936 pub failure_reason: i32,
5937 #[prost(message, optional, tag="3")]
5941 pub payload: ::core::option::Option<DeeplinkTokenPayload>,
5942}
5943#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5947#[repr(i32)]
5948pub enum ValidationFailureReason {
5949 Unspecified = 0,
5950 InvalidSignature = 1,
5953 Expired = 2,
5955 KeyRetired = 3,
5961 Malformed = 4,
5965}
5966impl ValidationFailureReason {
5967 pub fn as_str_name(&self) -> &'static str {
5972 match self {
5973 Self::Unspecified => "VALIDATION_FAILURE_REASON_UNSPECIFIED",
5974 Self::InvalidSignature => "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE",
5975 Self::Expired => "VALIDATION_FAILURE_REASON_EXPIRED",
5976 Self::KeyRetired => "VALIDATION_FAILURE_REASON_KEY_RETIRED",
5977 Self::Malformed => "VALIDATION_FAILURE_REASON_MALFORMED",
5978 }
5979 }
5980 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5982 match value {
5983 "VALIDATION_FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
5984 "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE" => Some(Self::InvalidSignature),
5985 "VALIDATION_FAILURE_REASON_EXPIRED" => Some(Self::Expired),
5986 "VALIDATION_FAILURE_REASON_KEY_RETIRED" => Some(Self::KeyRetired),
5987 "VALIDATION_FAILURE_REASON_MALFORMED" => Some(Self::Malformed),
5988 _ => None,
5989 }
5990 }
5991}
5992include!("pidgr.v1.tonic.rs");
5993